2016-07-28 1 views
0

私のC++プログラムにboolがあります。C++ boolからllvm loadを作成する

bool foo; 

fooというllvm値を作成したいとします。 (他のllvmコードで使用する)fooを名前で参照することはできますか?住所は変更されないため、住所によって変更されますか?

llvm::value* loadFoo = ?? 
+0

のは明確にしましょう:あなたが使用したいです '同じプロセスで 'llvm :: ExecutionEngine'によって実行されるLLVMコードの' foo'? – deniss

+0

はい、それは正しいです –

答えて

0

あなたは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) 
); 

次にあなたがfoo値へのポインタとしてfooVarを扱うことができます。

llvm::Value* loadFoo = builder.CreateLoad(fooVar); 

最後に一つ、実際にfooVarbool fooあるExecutionEngineことを伝えるためには、明示的にそれを実行する必要があります。名前で、

executionEngine.addGlobalMapping(fooVar, &foo); 

するか、(1):

executionEngine.addGlobalMapping("foo", &foo); 
関連する問題