0
在学习LLVM框架时,我试图实现一个'优化'过程,该过程在调用方法时在运行时打印每个方法的名称。LLVM:从函数传递访问全局变量
,我读了全局变量只能在模块间传递创建,并且我有创造串(每功能之一),与
Constant* data = ConstantDataArray::getString(M.getContext(), F.getName());
GlobalVariable* gvar =
new GlobalVariable(M,
data->getType(),
true,
GlobalValue::ExternalLinkage,
data,
"fname_" + F.getName().str());
这工作得很好,只要该字符串奠定了正确在由'优化'位码生成的汇编文件的内存中。
但是,我还没有找到一种方法来插入调用来打印函数通过这些字符串。 我想用
Value* string = F.getValueSymbolTable().lookup("fname_" + F.getName().str());
CallInst* call = builder.CreateCall(emitPutS(string, builder, &TLI));
但string
回来为NULL
。有没有更好的方法从函数中查找全局变量?