Какую оптимизацию выполняет LLVM?

я хотел бы конкретно знать, чему соответствуют различные уровни оптимизации LLVM.

То есть, Я хотел бы знать, какие этапы оптимизации выполняются ТОЧНО (вне внешнего интерфейса) и в каком порядке, когда я использую параметры "-0x" llvm (или clang, или opt). "man" соответствующего инструменты не предоставляют много информации по этому вопросу (в отличие от инструмента gcc).

Мне известна эта полезная страница: http://llvm.org/docs/Passes.html , но он не предоставляет никакой информации о параметрах "-Ox". Я искал некоторые параметры отладки или подробные сведения (особенно с использованием информации из "opt --help"), но я не смог найти какой-либо полезный параметр .

В качестве дополнения я заметил, анализируя код, что все различные инструменты LLVM, а также clang используют разные драйверы, которые анализируют параметры по-своему.Все эти драйверы похожи на параметры «-Ox»?

Изменить : Я нашел параметр «-debug-pass = Arguments» для инструмента «opt», который дает следующий результат для параметра « O1 ":

Pass Arguments:  -targetdata -no-aa -tbaa -targetlibinfo -basicaa -simplifycfg -domtree -scalarrepl -early-cse -lower-expect
Pass Arguments:  -targetlibinfo -targetdata -no-aa -tbaa -basicaa -globalopt -ipsccp -deadargelim -instcombine -simplifycfg -basiccg -prune-eh -always-inline -functionattrs -scalarrepl-ssa -domtree -early-cse -simplify-libcalls -lazy-value-info -jump-threading -correlated-propagation -simplifycfg -instcombine -tailcallelim -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-idiom -loop-deletion -loop-unroll -memdep -memcpyopt -sccp -instcombine -lazy-value-info -jump-threading -correlated-propagation -domtree -memdep -dse -adce -simplifycfg -instcombine -strip-dead-prototypes -preverify -domtree -verify

Это близко к тому, что я хотел, но остается два вопроса:

  • почему есть два списка?

  • есть ли аналогичный вариант для других инструментов, особенно" clang "? (согласно моим тестам, «-debug-pass = Arguments» не работает с clang)

Edit : опция «-debug-pass = Structure» для инструмента «opt» дает еще более удобные данные (с http://llvm.org/docs/WritingAnLLVMPass.html )

11
задан Antoine Trouve 5 October 2011 в 07:07
поделиться