Сейчас я работаю над проектом, включающим оптимизацию по профилю. Я нахожу документацию на http://llvm.org/docs/Passes.html#id49 с именем LLVM pass -block-placement
для выполнения простого PGO. Мне интересно, какой инструмент и флаги мне следует использовать для запуска этого прохода.
Я обнаружил, что этот проход находится в llvm/lib/CodeGen/MachineBlockPlacement.cpp
, и MachineFunctionPass
нельзя запустить из opt
или bugpoint
. Согласно справочной странице llc , я не могу напрямую использовать -block-placement
, вместо этого используя -print-after=block-placement
или -print-before=block-placement
. Однако использование этих флагов не дает никаких других результатов. Я также использовал --debug-pass=Executions
до llc
и видел, что -block-placement
передан в качестве аргумента, но передача не была выполнена. Мне интересно, если проход -block-placement
запускается автоматически, и я должен дать другие флаги pgo-файла для его запуска, или проход может выполняться индивидуально.