2011-10-07 104 views
1

我寫在其中,用戶可以通過調用價值選擇或引用LLVM,通過參考

的最後一個階段是產生LLVM彙編語言編譯器調用。我讀過的數組/向量通過引用傳遞,但我不知道如何通過引用傳遞整數。

我想過建立一個指針,然後通過指針,是這樣的:

foo(ref var1) { var1 = var1 + 1 } 
main { a=1; foo(a); } 

被翻譯成

foo(int* var1) { (*var1) = (*var1) + 1 } 
main {a=1; foo(&a); } 

,但我無法找到如何做到這一點的LLVM。

任何想法,無論是對指針或如何調用引用參數將真棒(我希望這不是一個太大的RTFM問題:/)

回答

3

嘗試運行下面的代碼通過http://llvm.org/demo/與優化級別設置爲無:

void foo(int* var1) { (*var1) = (*var1) + 1; } 
int main() {int a=1; foo(&a); } 

答案本質上就是您需要通過alloca指令分配內存。

+0

確保您禁用優化,否則在main中對'foo'的調用將被優化(從不使用'a')。 –

+0

謝謝,那個工具真的很有幫助! :) –