gpt4 book ai didi

rust - 在发出的 LLVM IR 上执行了哪些 LLVM 传递?

转载 作者:行者123 更新时间:2023-11-29 08:27:00 32 4
gpt4 key购买 nike

如果我使用 cargo rustc -- --emit=llvm-ir 编译,编译器将发出 LLVM IR。

Here are the LLVM passes that Rust uses.已对发出的 IR 执行了哪些 LLVM 传递(如果有)?

有什么方法可以指定您希望在发射 IR 之前执行哪些 channel ?

最佳答案

What LLVM passes, if any, have been performed on the emitted IR?

如果您使用夜间编译器,您可以使用 -Z print-llvm-passes 让 LLVM 打印运行的 pass。我建议也传入 -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,可在稳定的 rustc 上使用。但是, 没有 -Z no-parallel-llvm 输出是完全不可读的。)


Is there any way to specify what passes you would like performed before emitting IR?

您可以使用 -C passes argument 添加额外的通行证.您还可以使用 -C no-prepopulate-passes 清除默认的优化过程。 .示例:

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

Alias sets for function 'Alias sets for function '_ZN3std3sys4unix7process14process_common8ExitCode6as_i3217h65e06df78d6f4a47E':
_ZN3std2rt10lang_start17hd8fe8cd552faf2aaE':
...

关于rust - 在发出的 LLVM IR 上执行了哪些 LLVM 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50068793/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com