compiler-construction - 编译器优化安全吗?

标签 compiler-construction compiler-errors

我最近在工作中发现,由于存在编译器错误的风险,不为硬实时嵌入式系统使用编译器优化是一项政策(我们主要使用 gcc,但该政策也扩展到其他编译器)。显然,这项政策的开始是因为过去有人被优化器的错误烧毁了。我的直觉是这过于偏执,所以我已经开始寻找关于这个问题的数据,但问题是我找不到任何关于这个的硬数据。

有谁知道实际获取此类数据的方法?可以使用 gcc bugzilla 页面生成一些错误与编译器优化级别的统计信息吗?甚至有可能获得这样的无偏​​见数据吗?

最佳答案

我没有任何数据(也没有听说过任何人这样做......)但是......

在我选择禁用优化之前,我会选择我将使用的编译器。换句话说,我不会使用任何我不相信优化的编译器。

linux内核是用-Os编译的。这比任何 bugzilla 分析都更有说服力。

就个人而言,我对任何版本的 gcc linux 都可以。

作为另一个数据点,Apple 一直在从 gcc 转换为 llvm,有和没有 clang。 llvm 传统上在某些 C++ 方面存在问题,虽然 llvm-gcc 现在好多了,但 clang++ 似乎仍然存在问题。但这只是证明了这种模式:虽然 Apple(据称)现在使用 clang 编译 OS X 和 iOS,但它们并没有使用太多 C++ 和 Objective C++。所以对于纯 C 和 Objective C,我会信任 clang,但我仍然不信任 clang++。

关于compiler-construction - 编译器优化安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059265/

相关文章:

c++ - std::数组的 vector

c++ - 在模板类中的自动类型推断变量上调用模板函数

c++ - lua_pcall 去哪儿了? (OSX Lion 上的 Lua 5.2.0)

android - Google App Engine : DuplicateFileException

java - "javac: release version 10 not supported"编译期间

ios - 解释一下 iOS 的构建和编译?

c - 如何将 C 代码编译为原始的无操作系统二进制文件?

java - 获取字符串 "asdxyz\n"并用 ascii 值替换\n

c++ - 如何在 eclipse makefile 项目的编译器选项中设置 -std=c++0x?

ios - 将 header 放入 pch 文件中有什么区别?