首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在发出的LLVM IR上执行哪些LLVM过程?

在发出的LLVM IR上执行哪些LLVM过程?
EN

Stack Overflow用户
提问于 2018-04-28 03:04:09
回答 1查看 1.1K关注 0票数 2

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

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

有什么方法可以在发射红外线之前指定要执行的通道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 01:53:02

是否已对发出的IR执行了LLVM传递(如果有的话)?

如果您使用的是夜间编译器,则可以使用-Z print-llvm-passes让LLVM打印运行的传递。我建议您也传入-Z no-parallel-llvm-C codegen-units=1,以使输出更干净、更少重复。

代码语言:javascript
复制
$ 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,输出就会变得非常不可读。)

有没有办法在发射红外线之前指定要执行的通道?

您可以使用-C passes argument附加其他过程。您还可以清除-C no-prepopulate-passes的默认优化过程。示例:

代码语言:javascript
复制
$ rustc -C passes=print-alias-sets 1.rs

Alias sets for function 'Alias sets for function '_ZN3std3sys4unix7process14process_common8ExitCode6as_i3217h65e06df78d6f4a47E':
_ZN3std2rt10lang_start17hd8fe8cd552faf2aaE':
...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50068793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档