[LLVMdev] llvm get Value* iterators

Duncan Sands baldrick at free.fr
Fri Jan 11 04:47:44 PST 2013


Hi,

On 11/01/13 13:19, Alexandru Ionut Diaconescu wrote:
> Hello everyone !
>
> In my LLVM pass, there is `Intruction* I1`. All the used "I1"s are ICMP
> instructions. *I1->getOperand(0) returns a `Value*` type. From
>
>      errs()<<"\n"<<*I1->getOperand(0)<<"\n";
>      //printed : %3 = load i32* %c, align 4
> Printed as expected. But I want to use %c. Do you know how I can get %c ? I need
> to use the value %c in some computations.

I1->getOperand(0)->getOperand(0)

Ciao, Duncan.

>
> First, I tried
>
>      for (llvm::Value::use_iterator VI=(*I1->getOperand(0)).use_begin(),
> VE=(*I1->getOperand(0)).use_end(); VI != VE ; ++VI)
>        {
>          errs()<<"\n "<<**VI<<" \n";
>          //printed : %cmp3 = icmp ne i32 %3, 0
>        }
> But it is not getting Value* fields. Also, it is printing only one VI per for,
> so VI cannot increment.
>
> Second, it is a solution of taking the output of errs() in a string and parse
> the string for %c ? If so, how I can do it? I have problems while trying to
> declare `static raw_ostream S` in order to take somehow the errs() output.
>
> Thank you for any help !
>
>
> --
> Best regards,
> Alexandru Ionut Diaconescu
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list