如何让Rust编译器输出它生成的LLVM代码?

4

我希望能够查看Rust编译器生成的LLVM。最好的情况是能够让它仅输出LLVM然后停止。这可以以位码格式或者汇编文本形式呈现。

3个回答

10
你可以通过--emit传递你想要的格式。
例如:
rustc --emit=asm,llvm-bc,llvm-ir xxx.rs
cargo rustc -- --emit=asm,llvm-bc,llvm-ir

更多信息请查看rustc --help


非常感谢。我不确定为什么在运行 --help 并尝试各种 -C-Z 选项时错过了那个。 - rocky
有没有办法找出它将.s文件转储的位置以及如何显示优化版本? - don bright
你如何打印生成的 Rust 代码? - Lance

4
您可以操纵 RUSTFLAGS 环境变量,然后执行构建,例如:
RUSTFLAGS="--emit=llvm-ir" cargo build

如果您没有直接访问构建命令的权限(例如,当您正在构建像 Servo 这样使用抽象的构建工具 mach 时),这将非常有用。

我知道这更多是一个边缘情况,但当我尝试获取 Servo 代码的 IR 转储时,我发现它很有用。


2

如果要快速访问LLVM IR或x86_64汇编,可以使用Playground(和备用Playground)上的“LLVM”和“ASM”按钮,这样就会调用编译器并带有相应的选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接