微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 LLVM 中找到标志依赖或冲突?

如何解决如何在 LLVM 中找到标志依赖或冲突?

据我所知,GCC 有这个网站来弄清楚使用 while 优化的不同标志之间的关系。 GCC example website。就像 fpartialInlining 只有在打开 findirectInlining 时才有用。

我认为同样的事情会在 clang 中发生,换句话说,我认为不同的 pass 在 LLVM(CLANG) 中可能具有这种依赖/冲突关系。

但是在检查了开发人员提供的所有文档后,我发现它只是说明了这些 pass 中的功能LLVM PASS DOC

所以我认为我的问题可以分为两部分:

  1. LLVM PASS 中是否存在依赖关系或不存在这种依赖关系/冲突
  2. 如果有,我该如何找到它们。

解决方法

在使用 clang 编译任何 c 或 c++ 代码时,您可以通过 clang 找到哪些通道使用哪些优化级别,并尝试找出依赖关系。例如:

clang -O2 --target=riscv32 -mllvm -debug-pass=Structure example.c

(您也可以使用 -debug-pass=Arguments 代替 -debug-pass=Structure。这取决于可读性。)

这将给出针对 riscv32 目标的 2. 优化级别的 clang 使用的传递。如果您不提供目标,它会将默认设置为您的主机目标,并且请记住,某些已使用的传递更改与相同优化级别的不同目标相关。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。