2011-10-07 96 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

谢谢,那个工具真的很有帮助! :) –