Как узнать тип переменной в коде llvm

#llvm #llvm-ir

#llvm #llvm-ir

Вопрос:

Есть ли какой-либо способ узнать тип переменных в коде LLVM?

Например, у меня есть следующий код:

 %i = alloca i32, align 4
store i32 1, i32* %i, align 4
%n = add i32 6, 1
br label %2
  

И я хочу функцию, которая возвращает тип каждой из переменных %i , %n и %2 , т.е. соответственно i32* , i32 и label
Есть ли какое-либо предложение?

Ответ №1:

Введите* var_type = cur_instruction-> GetType();

Ответ №2:

%i = alloca i32, align 4 store i32 1, i32* %i, align 4 и %n = add i32 6, 1 являются инструкциями. Вы можете запросить их тип с помощью их getType метода.

%2 является базовым блоком и имеет тип label. Вы можете проверить, является ли значение базовым блоком с помощью isa .