LLVM优化级别的含义

use*_*668 10 compiler-construction optimization llvm

我最近开始使用Clang/LLVM,想知道是否有关于-Ox优化级别的特定文档?

我在LLVM文档页面上找不到多少内容.有人可以分享一些链接吗?

谢谢.

Oak*_*Oak 15

Clang的命令行选项文档确实非常差,特别是你是正确的,几乎没有解释优化级别的作用.

但是,FreeBSD会添加一个包含有用摘要手册页:

-O0 -O1 -O2 -Os -Oz -O3 -O4
指定要使用的优化级别.-O0表示"无优化":此级别编译速度最快,并生成最可调试的代码.-O2是中等水平的优化,可实现大多数优化.-Os类似于-O2,具有额外的优化以减少代码大小.-Oz就像-Os(因此-O2),但进一步减少了代码大小.-O3类似于-O2,除了它允许执行需要更长时间的优化或可能生成更大代码的优化(试图使程序运行更快).在支持的平台上,-O4启用链接时优化; 目标文件以LLVM bitcode文件格式存储,整个程序优化在链接时完成.-O1介于-O0和-O2之间.

如果您要查找为每个优化执行的确切传递列表,请参阅此Stackoverflow问题: