Rust能保存编译器的优化记录吗?

sup*_*_jh 6 inline llvm compiler-optimization rust rust-cargo

在 C 语言中,我可以使用以下命令输出编译器优化信息:

clang -O2 main.c -o main -fsave-optimization-record
Run Code Online (Sandbox Code Playgroud)

rust是否也有这样的选项来输出优化信息,比如函数内联、参数优化等。我尝试了以下命令,但失败了,

cargo rustc -- -C llvm-args=-fsave-optimization-record
Run Code Online (Sandbox Code Playgroud)

错误信息如下:

rustc -Cllvm-args="..." with:未知的命令行参数“-fsave-optimization-record”。尝试: 'rustc -Cllvm-args="..." with --help'

Abd*_*P M 7

您可以使用remarkcodegendebuginfo选项。

> rustc main.rs -C remark=all -g 
Run Code Online (Sandbox Code Playgroud)

请注意,这-g是 的别名-C debuginfo=2。此选项将使注释具有准确的源位置。

引用自文档:

评论

该标志允许您打印优化过程的备注。通行证列表应以空格分隔。 all将在每一次通过时发表评论。

调试信息

该标志控制调试信息的生成。它采用以下值之一:

  • 0none:根本没有调试信息(默认)。
  • line-directives-only: 仅行信息指令。对于 nvptx* 目标,这可以进行分析。对于其他用例,line-tables-only 是更好、更兼容的选择。
  • line-tables-only:仅限行表。为带有文件名/行号信息的回溯生成最少量的调试信息,但不包含
    其他任何内容,即没有变量或函数参数信息。
  • 1或者limited:没有类型或变量级别信息的调试信息。
  • 2或者full:完整的调试信息。

该选项的输出将不那么可读。另一种选择是考虑使用cargo-remark.

也可以看看: