我正在尝试使用clang3.4编译程序,但是我使用的优化选项被忽略了。 例如,我正在尝试编译并传递以下选项:-O1 -instcombine 但是我得到的结果是: clang34: warning: argument unused during compilation: '-instcombine' 您可以在此处找到LLVM的所有可用优化传递列表,这个链接和问题中也有。是否还有其他需要补充的?谢谢。
这些是 LLVM 优化 Pass,并非 Clang 的。您无法直接调用 LLVM 优化 Pass。但是,您可以通过 -emit-llvm 选项发出 LLVM IR 并使用 opt 工具调用任何 LLVM 优化 Pass。
如@Anton所述,这些编译器传递(passes)是用于llvm-opt而不是clang的,clang仅支持标准优化级别-O[X]。但是,如果您想使用编译器标志,例如"-instcombine",则必须在使用clang时添加选项-emit-llvm。以下是一些注释和示例:1. LLVM-opt的列表可以在这里找到。 2. 这是一个使用LLVM-opt的简短示例:``` clang -S -emit-llvm foo.c -lm opt ${<MY_DESIRED_COMPILER_FLAGS>} -S -o foo_OPTIMIZED.ll foo.ll `````` clang foo_OPTIMIZED.ll -lm ```现在,如果您对比两个版本的LLVM-IR或.ll文件,您就可以看到它们之间的差异。3. 对整个项目进行OPT。就此而言,您应该将这些命令放入循环中,并对您需要的每个文件都应用 opt。或者,编写一个 Makefile 为您完成这项工作。或者,创建您自己的传递,包括您所需的传递,并将它们作为 .so 文件包含。更多信息请点击这里! 希望能帮到您。
-fstrict-aliasing
,这个选项在我提供的两个链接中都没有列出。 - Paschalis