[英]creating llvm load from a c++ bool
我的c ++程序中有個布爾值。
bool foo;
我想創建一個讀取foo
的llvm值。 (以供其他llvm代碼使用)我可以僅通過名稱引用foo嗎? 還是按地址,因為它的位置不會改變?
llvm::value* loadFoo = ??
您的LLVM代碼中需要一個全局外部變量:
@foo = external global i8
或者,使用API:
llvm::GlobalVariable* fooVar = new GlobalVariable(
/*Module=*/ Module,
/*Type=*/ llvm::Type::getInt8Ty(Context),
/*isConstant=*/ false,
/*Linkage=*/ GlobalValue::ExternalLinkage,
/*Initializer=*/ nullptr,
/*Name=*/ "foo" // (1)
);
然后,您可以將fooVar
視為指向foo
值的指針:
llvm::Value* loadFoo = builder.CreateLoad(fooVar);
最后一件事,實際上是要告訴ExecutionEngine
fooVar
是bool foo
,您需要明確地做到這一點:
executionEngine.addGlobalMapping(fooVar, &foo);
或者,按名稱(1):
executionEngine.addGlobalMapping("foo", &foo);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.