[LLVMdev] llvm get Value* iterators

Alexandru Ionut Diaconescu alexandruionutdiaconescu at gmail.com
Fri Jan 11 04:19:10 PST 2013


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.

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130111/44fdccac/attachment.html>


More information about the llvm-dev mailing list