[LLVMdev] LLVM Instruction*->getOperand() not working properly for ICMP
Krzysztof Parzyszek
kparzysz at codeaurora.org
Fri Jan 11 06:33:58 PST 2013
On 1/11/2013 5:50 AM, Alexandru Ionut Diaconescu wrote:
> Hi Óscar,
>
> But if I do "I1->getOperand(0)->getOperand(0)" I get " ‘class
> llvm::Value’ has no member named ‘getOperand’ ". getOperand() I think
> it's only defined for Instruction class. Do you know any equivalent
> method for Value?
Value is a base superclass, from which a lot of other classes are
derived. Among the derived classes are User and Instruction (which
itself is derived from User). If I remember correctly, the class User
adds "getOperand". In your case, the simplest thing to do would be to
down-cast the Value to Instruction, and if the cast returns non-zero,
then you have a valur of type Instruction, for which you can use
getOperand. For example:
Value *V = ...
if (Instruction *In = dyn_cast<Instruction>(V)) {
// Now have Instruction, can use getOperand:
... = In->getOperand(i);
}
-Krzysztof
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-dev
mailing list