2011-03-28 67 views
4

我在寫我的第一個LLVM示例。我正在嘗試構建一個小型LLVM模塊,其中包含一個函數,該函數接受函數的名稱並返回指向它的指針。問題是我不知道如何在LLVM中生成函數指針。通過調用getDeclaration(...),我得到了一個Function對象。有什麼方法可以得到指針嗎?在LLVM中生成函數指針

回答

5

函數是一個GlobalValue,所以它是指針本身。同時,您可以使用LLVM的C++後端來生成C++ API調用,這將重新創建您提供給llc的IR。

例如,喂下面的代碼http://llvm.org/demo

void foo(int (*bar)(int)); 

int factorial(int X); 

int main(int argc, char **argv) { 
    foo(factorial); 
} 

請確保您有「顯示LLVM C++ API代碼」複選框選中,你會看到相應的LLVM IR和C++ API調用,將重新創建它。