如何在基本块中插入LLVM StoreInst

时间:2016-01-28 13:13:30

标签: c++ llvm

我正在阅读基本块中的说明。在分配指令之后,我想为该变量创建一个存储,并在分配指令之后插入它。 现在我可以用

找到分配指令
if(AllocaInst *AI=dyn_cast<AllocaInst>(&i))

但我不知道如何创建StoreInst。我只想在其中存储数字10,无论变量是哪种类型。

我试过这个

StoreInst* stinst = new StoreInst(Value *Val, Value *Ptr, Instruction *InsertBefore);

但是我不知道该替代Val,Ptr以及如果需要指向InsertBefore的指针如何获取下一条指令的地址

1 个答案:

答案 0 :(得分:2)

要在指示后插入,您可以使用insertAfter() method。在你的情况下:

AI->insertAfter(stinst)

要创建StoreInst,您需要提供

  • Value *Val是您要存储的内容。在您的情况下,您需要创建一个Constant代表&#34; 10&#34;整数然后传递给那里。
  • Value *Ptr是您要放置值的位置。我想,你的情况是AI
  • nullptr代表Instruction *InsertBefore,因为您是手动插入的。