[LLVMdev] LLVM help

John Criswell criswell at uiuc.edu
Wed Jun 23 08:23:18 PDT 2010

> Sir I am trying to get the constant 2 in instruction y=x+2;
> Its intermediate representaton is like %y=add nsw i32 %x , 2
> If I use getOperand(2).getName() then I get null string.
> How can I get the value 2 ?
> Regards
> Rahul Goyal

The first thing you have to do is to see if the operand is a 
ConstantInt.  You can do that by using:

ConstantInt * CI = dyn_cast<ConstantInt>(I->getOperand(2));

If CI is non-zero, then the operand is a ConstantInt.

Then all you have to do is use the getZExtValue() or getSExtValue() 
(depending on whether you want to treat the constant as signed or 
unsigned) method of ConstantInt:

if (CI)
    unsigned value = CI->getZExtValue();

-- John T.

More information about the llvm-dev mailing list