Как вставить инструкцию, которая хранит адрес переменной в проходе LLVM? - PullRequest
0 голосов
/ 07 марта 2019

Если 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, как показано ниже,

Modified IR,

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

Спасибо и благодарны за помощь:)

1 Ответ

1 голос
/ 08 марта 2019

%i уже является адресом переменной i - вы можете видеть его тип i32*, который является указателем. Чтобы получить значение i (50 в вашем примере), вам понадобится инструкция load.

...