增加LLVM IR中的变量

时间:2014-11-08 16:42:20

标签: llvm

任何人都可以通过LLVM传递帮助我在LLVM IR中增加变量值(假设为5)。 这是我的指示,我想增加

%1 = load i32* %k, align 4
  %inc = add nsw i32 %1, 1
store i32 %inc, i32* %k, align 4

代替1 in%inc(add)指令如何用5替换它。

我尝试通过

识别加载指令
if(LoadInst *ld=dyn_cast<LoadInst>instruction)

然后

Value *Five = ConstantInt::get(Type::getInt32Ty(context), 5);

然后用我的新指令替换add指令

Instruction *in=BinaryOperator::Create(Instruction::Add,ld,Five,"inc",some instruction);

我也尝试将ld指令强制转换为Value,但它没有用。

1 个答案:

答案 0 :(得分:1)

假设I是指令迭代器,它看起来像

 if(I->getOpcode()== Instruction::Add)
      I->setOperand(1,Val *)