递增LLVM IR中的变量

递增LLVM IR中的变量,llvm,Llvm,有谁能帮我在LLVM IR中通过一个LLVM过程将一个变量的值增加5吗。 这是我要增加的指示 %1 = load i32* %k, align 4 %inc = add nsw i32 %1, 1 store i32 %inc, i32* %k, align 4 代替%inc(添加)指令中的1,如何将其替换为5 我试着通过 if(LoadInst *ld=dyn_cast<LoadInst>instruction) 然后用我的新指令替换add指令 Instruction *i

有谁能帮我在LLVM IR中通过一个LLVM过程将一个变量的值增加5吗。 这是我要增加的指示

%1 = load i32* %k, align 4
  %inc = add nsw i32 %1, 1
store i32 %inc, i32* %k, align 4
代替%inc(添加)指令中的1,如何将其替换为5

我试着通过

if(LoadInst *ld=dyn_cast<LoadInst>instruction)
然后用我的新指令替换add指令

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

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

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

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

谢谢您的回复。但这不正确,因为我们需要L值。I->SetOperator(操作数号,值*)怎么样?。不久前我用了一些类似的东西,它很有效,希望对你有用。我已经更新了答案,希望你能投它一票,如果发现有用的话
 if(I->getOpcode()== Instruction::Add)
      I->setOperand(1,Val *)