изключете clang оптимизацията, премахнете инструкцията phi

1) Възможно ли е да изключите каквато и да е оптимизация в clang?

2) Има ли начин да се премахне всяка phi инструкция от генерирания llvm код?

Използвам clang с опции: clang test.c -Wimplicit -emit-llvm -g -O0 -c -o result.bc

А за някои изходни файлове clang излъчва llvm код с phi-инструкции. Намирам каквото и да е, за да получа llvm-файл без phi-инструкции.


person Passenger    schedule 14.06.2011    source източник
comment
Далеч не съм експерт по LLVM, но бих си помислил, че phi-инструкциите са необходими за IR... Не са ли?   -  person Matthieu M.    schedule 15.06.2011
comment
Може би фи-инструкциите са полезни за IR код. Но те не са необходими. Например llvm-gcc генерира llvm код за същия файл без phi-инструкции. Освен това clang може да генерира llvm код без никакво phi за много изходни файлове.   -  person Passenger    schedule 15.06.2011
comment
какъв е проблемът с фалшивите възли? Внедрявате ли свой собствен бекенд? В този случай би било по-добре да използвате приличен SSA за вашето планиране на регистъра, дори ако целта ви е, да речем, стекова машина. В противен случай - просто използвайте reg2mem пропуск, за да преместите всичко в стека.   -  person SK-logic    schedule 15.06.2011


Отговори (1)


Можете да използвате пропуска reg2mem на LLVM, за да се отървете от всички phi. Просто ви захранва .bc от clang в opt -reg2mem и сте готови

person Anton Korobeynikov    schedule 15.06.2011
comment
Как това премахва фи възлите? - person J D; 24.09.2017
comment
Променя ги на зареждания и съхранява на разпределени от стека променливи. - person Anton Korobeynikov; 24.09.2017
comment
О, и тогава просто скачате до едно място. Това е добра идея... :-) - person J D; 24.09.2017