2015-08-05 5 views
3

Есть ли способ получить инструкции «phi» на .ll-файлах?Инструкции Phi на LLVM IR

Для следующей части кода, я не получаю инструкции любого «PHI» на байткод:

int y, z; 
y = f; 

if (y < 0) 
    z = y + 1; 
else 
    z = y + 2; 
return z; 

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

+1

Я не понимаю, в чем проблема с -mem2reg? Вы ищете печать результатов после прохода mem2reg? Затем попробуйте 'opt -mem2reg -S example.ll' –

+0

Да, это работает для меня. Благодаря! Я просто хочу отладить мой код на основе этого .ll кода. – eternalStudent

+0

Я запускаю 'opt -load ../../../Release+Asserts/lib/MyPass.so -mem2reg -S - MyPass eternalStudent

ответ

4

Виртуальные регистры в LLVM находятся в форме SSA, а ячеек памяти нет. Для интерфейсов LLVM, таких как Clang, удобно не заботиться о форме SSA. Если я использую Clang для компиляции кода C в LLVM IR, все переменные выделяются в стеке. Форма SSA не требуется, поскольку z находится в памяти. не

Если вы используете

opt -mem2reg -S example.ll -o example-opt.ll 

как предложено в предыдущих комментариях, z больше не выделяется в стеке, но в виртуальном реестре. Таким образом, вы также увидите инструкцию phi для вашего примера для сохранения формы SSA.

Смежные вопросы