当我使用方法
将指令插入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?
答案 0 :(得分:2)
我认为这是在
中设定的void SymbolTableListTraits<ValueSubClass,ItemParentClass>
::addNodeToList(ValueSubClass *V) {
lib/IR/SymbolTableListTraitsImpl.h
中的
addNodeToList
由ilist
的{{1}}方法调用,该方法由insert
调用。因此,无论何时向基本块中的指令列表添加指令,其父节点都会自动设置为基本块本身。