任何人都可以通过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,但它没有用。
答案 0 :(得分:1)
假设I
是指令迭代器,它看起来像
if(I->getOpcode()== Instruction::Add)
I->setOperand(1,Val *)