Rust 在发出的LLVM IR上执行哪些LLVM传递?

Rust 在发出的LLVM IR上执行哪些LLVM传递?,rust,llvm,rust-cargo,llvm-codegen,Rust,Llvm,Rust Cargo,Llvm Codegen,如果我使用c--emit=llvm-ir编译,编译器将发出llvm-ir 对发射的IR执行了哪些LLVM传递(如果有) 有没有办法指定在发射IR之前要执行的过程 对发射的IR执行了哪些LLVM传递(如果有) 如果您使用的是夜间编译器,那么可以使用-Z print llvm passes让llvm打印运行的过程。我建议也传入-Z no parallel llvm和-C codegen units=1,以使输出更清晰,重复性更少 $rustc-C codegen units=1-Z无并行llvm-Z

如果我使用
c--emit=llvm-ir
编译,编译器将发出llvm-ir

对发射的IR执行了哪些LLVM传递(如果有)

有没有办法指定在发射IR之前要执行的过程

对发射的IR执行了哪些LLVM传递(如果有)

如果您使用的是夜间编译器,那么可以使用
-Z print llvm passes
让llvm打印运行的过程。我建议也传入
-Z no parallel llvm
-C codegen units=1
,以使输出更清晰,重复性更少

$rustc-C codegen units=1-Z无并行llvm-Z打印llvm通过1.rs
传递参数:-tti-targetlibinfo-验证-ee仪器
目标变换信息
目标库信息
功能通行证管理器
模块验证器
仪器函数入口/出口,调用例如mcount()(预内联)
传递参数:-tti-假设缓存跟踪器-配置文件摘要信息-targetlibinfo-forceattrs-basiccg-始终在线
目标变换信息
假设缓存跟踪器
概要信息
目标库信息
模块进程管理器
力集函数属性
调用图构造
调用图SCC过程管理器
用于始终\u内联函数的内联线
...
-Z print llvm passes
标志相当于
-C llvm args=-debug pass=Structure
,可在稳定的rustc上使用。但是,如果没有
-Z,则没有并行llvm
,则输出非常不可读。)


有没有办法指定在发射IR之前要执行的过程

您可以使用。您还可以使用清除默认优化过程。例如:

$rustc-C passs=打印别名集1.rs
函数的别名集“函数的别名集”\u ZN3std3sys4unix7process14process\u common8ExitCode6as\u i3217h65e06df78d6f4a47E':
_ZN3std2rt10lang_开始17HD8Fe8CD552AF2AAE':
...

与您的问题无关,但您为什么想知道?请注意,您已链接到Rust的LLVM fork的一个非官方fork,它上次更新是在5年前。我不知道你为什么选择那个源代码,但它不太可能仍然是准确的。@Shepmaster我是一名研究编程语言属性的研究生。我们使用LLVMIR,因为许多语言都编译成LLVMIR。我不知道那是一个叉子,我会设法找到一份官方通行证的清单。谢谢。默认情况下,如果使用3个优化级别,是否所有优化过程都可用?