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
。有沒有更好的方法從函數中查找全局變量?