我正在尝试使用clang3.4编译程序,并且忽略了我使用的优化传递(或标志?!)。
例如我正在尝试编译并传递以下选项“
-O1 -instcombine
我明白了:
clang34: warning: argument unused during compilation: '-instcombine'
可以找到LLVM的所有可用优化通道的列表here,并在此question中找到。我错过了什么吗?
谢谢。
答案 0 :(得分:5)
这些是LLVM优化传递,而非clang。您无法直接调用LLVM优化传递。但是,您可以发出LLVM IR vie -emit-llvm选项并使用opt
工具调用任何LLVM优化传递。
答案 1 :(得分:2)
一些评论和示例:
可以找到LLVM-opt列表Here!
以下是使用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
现在,如果您使用diff
或LLVM-IR
两个版本的.ll
文件,则可以看到差异。
就此而言,您应该将这些命令置于循环中并对您需要的每个文件应用opt
OR
编写一个为您执行此操作的makefile。
OR
创建您自己的传递,其中包含您想要的传球,并将它们包含为.so文件。更多信息Here!
希望有所帮助。