如何在LLVM中找到标志相关性或冲突



正如我所知,GCC有这个网站可以在优化时使用来计算不同标志之间的关系。GCC示例网站。像fpartialInlining只有当finddirectInlining打开时才有用。

我认为同样的事情也会发生在clang中,换句话说,我认为不同的通行证在LLVM(clang(中可能存在这种依赖/冲突关系。

但在检查了开发人员提供的所有文档后,我发现它只是说明了这些通行证中的功能。LLVM通过文档

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

  1. LLVM PASS中是否存在依赖项,或者不存在此类依赖项/冲突
  2. 如果有,我怎么能找到它们

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

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

(您也可以使用-debug-pass=Arguments而不是-debug-pass=Structure。这取决于可读性。(

这将给出clang在2时使用的传球。riscv32目标的优化级别。如果你没有给出一个目标,它会将默认值设置为你的主机目标,并记住一些used pass更改与相同优化级别的不同目标有关。

最新更新