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

Есть ли способ узнать тип переменных в коде 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 и метку. Есть предложения?


person user3794683    schedule 02.07.2014    source источник


Ответы (2)


Тип* var_type = cur_instruction->getType();

person valiant wang    schedule 11.11.2015

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

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

person Oak    schedule 02.07.2014