[LLVMdev] Value* to Instruction*/LoadInst* casting

Nick Lewycky nicholas at mxc.ca
Mon Jan 28 02:54:46 PST 2013


Alexandru Ionut Diaconescu wrote:
> Hello everyone,
>
> Can you please tell me if it is possible in LLVM to cast a `Value*` to
> an `Instruction*/LoadInst*` if for example `isa<LoadInst>(MyValue)` is
> true?

http://llvm.org/docs/ProgrammersManual.html#the-isa-cast-and-dyn-cast-templates

  In my particular piece of code:
>
>      Value* V1 = icmpInstrArray[i]->getOperand(0);
>      Value* V2 = icmpInstrArray[i]->getOperand(1);
>      if (isa<LoadInst>(V1) || isa<LoadInst>(V2)){
>      ...
>      if(isa<LoadInst>(icmpInstrArray[i]->getOperand(0)))
>          LoadInst *LD100 = cast<LoadInst>(icmpInstrArray[i]->getOperand(0));
>              Value *C100 = LD100->getPointerOperand(); //HERE
> COMPILATION ERROR

You're missing braces after the if-statement.

Nick

> Further, I just need to make `C100->getName()` and I will get the loaded
> variable.
>
> I don't think that I can use cast like that. Can you tell me a method to
> obtain the loaded variable from a Load instruction correspondent to my
> ICMP instructions? Or better how I can extract the Load instruction from
> `icmpInstrArray[i]->getOperand(0)`?
>
> Thank you a lot !
>
>
> _______________________________________________
> 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