如何在LLVM传递中插入一条存储变量地址的指令?

时间:2019-03-07 20:20:38

标签: clang llvm

如果x是整数变量,即int x; ->%x = alloca i32

我想通过传递指令将指令%add =&(%x)插入我的IR代码中。

是否可以通过GEP指令或其他任何方式进行?我的意思是%add = gep(x)。

我的初始IR,

  %i = alloca i32, align 4
  store volatile i32 50, i32* %i, align 4

对于C代码

i=50;

我想写一张通行证,从中获得如下所示的修改后的IR,

修改后的IR,

  %i = alloca i32, align 4
  store volatile i32 50, i32* %i, align 4
  %i_addr = (Get address of i)

感谢并感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

%i已经是变量i的地址-您可以看到其类型为i32*,它是一个指针。要获得i的值(在您的示例中为50),您将需要一条load指令。