LLVM IR 指令何时何地设置其父 BasicBlock?
When and where did the LLVM IR Instruction set it's parent BasicBlock?
当我使用方法
将指令插入 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?
我认为这是在
中设置的
void SymbolTableListTraits<ValueSubClass,ItemParentClass>
::addNodeToList(ValueSubClass *V) {
在lib/IR/SymbolTableListTraitsImpl.h
addNodeToList
由 ilist
的 insert
方法调用,后者由 push_front
调用。因此,无论何时向基本块中的指令列表添加指令,其父项都会自动设置为基本块本身。
当我使用方法
将指令插入 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?
我认为这是在
中设置的void SymbolTableListTraits<ValueSubClass,ItemParentClass>
::addNodeToList(ValueSubClass *V) {
在lib/IR/SymbolTableListTraitsImpl.h
addNodeToList
由 ilist
的 insert
方法调用,后者由 push_front
调用。因此,无论何时向基本块中的指令列表添加指令,其父项都会自动设置为基本块本身。