LLVM - Как получить переменную результата инструкции

Я новичок в LLVM, и у меня простая проблема, но я не могу найти решение в документации.

Я выполняю проход функции, который вычисляет инструкции, и для этого мне нужны все «данные» из инструкции, я имею в виду оператор, все операнды и результат.

Моя проблема в том, что я не могу получить переменную результата. Например, для инструкции:

%add1 = add nsw i32 %x, %y

У меня могут быть имена и переменные x и y, у меня может быть opCode, у меня может быть имя add1, но у меня не может быть < em> add1.

Я прочитал все функции на странице Instruction документации и могу Я не нашел ничего похожего на то, что я ищу.

Итак, какой API-интерфейс может решить мою проблему?


person Phantom    schedule 16.04.2015    source источник
comment
Небольшое примечание: вам лучше не использовать термин переменная для LLVM IR, поскольку %add1 является инструкцией, и он использует % x и % y (операнды), которые могут быть любыми экземплярами подкласса Value. переменная официально используется только для GlobalVariable .   -  person Hongxu Chen    schedule 18.04.2015


Ответы (1)


Instruction наследуется от Value и, следовательно, имеет метод getName(), который решает вашу проблему. Но помните, что инструкция может быть безымянной (например, %0) и getName, вероятно, в этом случае не вернет ничего полезного.

person evagl    schedule 16.04.2015
comment
Как я уже сказал, я знал, что могу узнать «название» инструкции, поэтому вы не ответили на мой вопрос. Но я не обратил внимания на то, что инструкция наследуется от Value, поэтому я могу использовать инструкцию как Value, и это отвечает на мой вопрос! Так что вы решите мою проблему, спасибо;) - person Phantom; 17.04.2015
comment
Я не понял, как вы получили переменную add1, используя тот факт, что инструкция является значением. - person excavator; 23.02.2017