2016-11-04 7 views
0

の動的関数名を、すなわち、メイン()、GCD() 、gcd()。印刷LLVM

問題は、ヘルパー関数の引数として関数名を渡す方法がわかりません。

私は次のように書いた:ヘルパー関数の場合 を:私が使用 :域用void printDynamicFuncName(char* FName) {}

:私が使用 :

Type* Int8 = Type::getInt8PtrTy(context); 
Function *CalleeF = cast<Function>(F.getParent()->getOrInsertFunction("_Z20printDynamicFuncNamePc", Void, Int8, NULL)); 
Constant* arg = ConstantDataArray::getString(context, F.getName()); 
Builder.CreateCall(CalleeF, arg); 

答えて

0

私はそれを自分自身を持って!

私が使用できます。

Type* Int8 = Type::getInt8PtrTy(context); 
static IRBuilder<> Builder(context); 
Instruction *I = &*inst_begin(F); 
Function *CalleeF = cast<Function>(F.getParent() ->getOrInsertFunction("_Z20printDynamicFuncNamePc", Void, Int8, NULL)); 
Builder.SetInsertPoint(I); 
Builder.CreateCall(CalleeF, Builder.CreateGlobalStringPtr(F.getName()), ""); 

ながらヘルパー関数で:

void printDynamicFuncName(char* FName) { 
     errs() << "Function Name is " << FName << "\n"; 
    }