一些渴望获得最佳性能的人有时会在构建软件时使用”-Ofast “优化级别,该级别比”-O3 “更高一层,但可能会带来数学不安全的风险。LLVM 开发人员目前正在权衡是否要废除 -Ofast,要么将其删除,要么将其作为 -O3 优化的别名。
GCC 和 LLVM/Clang 的 -Ofast 选项使用 -O3 但附加了 -ffast-math。快速数学选项打破了 IEEE 标准的合规性,以提高性能。这就有可能导致浮点运算的数学运算不安全。
由于可能会出现不符合规范的数学运算,而且一些使用”-Ofast “选项的用户可能没有意识到这种风险,因此 LLVM 开发人员正在考虑是否应取消这种激进的优化级别和/或将其别名为 -O3。
Google 的 James Knight 在 LLVM Discourse 上提出了这一建议。到目前为止,回复者都支持有效废除 LLVM/Clang 的 -Ofast 优化的想法。
转自 Proposal Raised To Deprecate “-Ofast” For The LLVM/Clang Compiler – Phoronix