何时何地LLVM IR指令设置它的父BasicBlock?

时间:2015-05-19 07:52:23

标签: llvm llvm-ir

当我使用方法

将指令插入BasicBlock时
BasicBlock::getInstList().push_front(*Instruction); 

但什么时候将指令的父级设置为当前的BasicBlock?

代码如下并且运作良好。我只想知道何时何地设置克隆指令的父级。

感谢。

Instruction *ori_inst = cur_inst->clone();  
//until now, the ori_inst does not have it's parent
CUR_BB->getInstList().push_front(ori_inst); 
//now, the ori_inst has CUR_BB as it's parent, why?

1 个答案:

答案 0 :(得分:2)

我认为这是在

中设定的
void SymbolTableListTraits<ValueSubClass,ItemParentClass>
      ::addNodeToList(ValueSubClass *V) {
lib/IR/SymbolTableListTraitsImpl.h

中的

addNodeToListilist的{​​{1}}方法调用,该方法由insert调用。因此,无论何时向基本块中的指令列表添加指令,其父节点都会自动设置为基本块本身。