我想在基本块的末尾添加一条指令来增加GlobalVariable(使用LLVM C++库).我对LLVM很新,我可以直接执行此操作,还是需要加载全局变量,将其递增所需的值并写回全局变量?
即使我加载变量(使用LoadInst构造函数),"Add"指令如何知道变量在哪里?
例如,看看这个IR ocde:
%cell_index = load i32* %cell_index_ptr
%new_cell_index = add i32 1, %cell_index
Run Code Online (Sandbox Code Playgroud)
add指令知道要操作的变量(cell_index).但是因为我将从C++创建加载指令,所以我不知道将在何处创建变量.
是的,您必须创建加载,添加和存储说明。
在LLVM的C ++类层次结构中,为Instructionsubclasses Value。创建时LoadInst,您可以在创建新说明时直接引用它。例如:
IRBuilder<> IR(SomeInsertionPoint);
LoadInst *Load = IR.CreateLoad(MyGlobalVariable);
Value *Inc = IR.CreateAdd(IR.getInt32(1), Load);
StoreInst *Store = IR.CreateStore(Inc, MyGlobalVariable);
Run Code Online (Sandbox Code Playgroud)