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