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? 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
Further, I just need to make C100->getName()
and I will get the loaded variable.
The compilation error is : error: ‘LD100’ was not declared in this scope.
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)
?