Какие проходы LLVM выполняются на излучаемом IR LLVM? - PullRequest
0 голосов
/ 27 апреля 2018

Если я скомпилирую с cargo rustc -- --emit=llvm-ir, компилятор выдаст LLVM IR.

Вот проходы LLVM, которые использует Rust. Какие проходы LLVM, если они есть, были выполнены на излучаемом IR?

Есть ли способ указать, какие проходы вы хотели бы выполнить перед излучением IR?

1 Ответ

0 голосов
/ 03 июня 2018

Какие проходы LLVM, если таковые имеются, были выполнены на излучаемом IR?

Если вы используете ночной компилятор, вы можете использовать -Z print-llvm-passes, чтобы LLVM печатал, какие проходы выполняются. Я бы порекомендовал также ввести -Z no-parallel-llvm и -C codegen-units=1, чтобы сделать вывод более чистым и менее повторяющимся.

$ rustc -C codegen-units=1 -Z no-parallel-llvm -Z print-llvm-passes 1.rs

Pass Arguments:  -tti -targetlibinfo -verify -ee-instrument
Target Transform Information
Target Library Information
  FunctionPass Manager
    Module Verifier
    Instrument function entry/exit with calls to e.g. mcount() (pre inlining)
Pass Arguments:  -tti -assumption-cache-tracker -profile-summary-info -targetlibinfo -forceattrs -basiccg -always-inline
Target Transform Information
Assumption Cache Tracker
Profile summary info
Target Library Information
  ModulePass Manager
    Force set function attributes
    CallGraph Construction
    Call Graph SCC Pass Manager
      Inliner for always_inline functions
...

(Флаг -Z print-llvm-passes эквивалентен -C llvm-args=-debug-pass=Structure, который можно использовать на стабильной ржавчине. Однако без -Z no-parallel-llvm выходные данные совершенно нечитаемы.)


Есть ли способ указать, какие проходы вы хотели бы выполнить перед излучением IR?

Вы можете добавить дополнительные проходы, используя -C passes аргумент . Вы также можете очистить проходы оптимизации по умолчанию с помощью -C no-prepopulate-passes. Пример: * 1 027 *

$ rustc -C passes=print-alias-sets 1.rs

Alias sets for function 'Alias sets for function '_ZN3std3sys4unix7process14process_common8ExitCode6as_i3217h65e06df78d6f4a47E':
_ZN3std2rt10lang_start17hd8fe8cd552faf2aaE':
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...