【问题标题】:Difference between GCC and Clang optimization options [closed]GCC 和 Clang 优化选项之间的区别 [关闭]
【发布时间】:2013-12-30 17:44:16
【问题描述】:

前提条件:我使用 -O2 优化标志调用 gcc,并使用 -O2 优化标志调用 gcc。
这是否意味着传递给编译器的选项列表将相同?
clang 是否了解标准 GCC 选项,例如 -funroll-loops?

我在手册中没有找到关于这个问题的任何有用信息:
http://llvm.org/releases/3.3/tools/clang/docs/UsersManual.html
我什至找不到可以与 clang 一起使用的可能的 GCC 兼容选项列表。

clang 甚至对 GCC 选项做任何事情(或者它只是忽略它们?)
我只是需要澄清一下它是如何工作的。

【问题讨论】:

  • 查看 clang 手册。它理解该选项,但我不确定它是否能理解所有选项。
  • 无法保证-O2 在 gcc 的 clang 中的含义相同。鉴于他们有不同的优化器,这样的保证无论如何是不可能的。
  • @Adriano clang manual 对于它实际支持的优化选项及其含义出奇地沉默。
  • @user4815162342 它只是您需要的所有文档的入口点。例如this list of optimization flags.
  • @MikhailKalashnikov 刚刚阅读了我在之前评论中发布的链接。手册是其他(更详尽的)文章的入口点。

标签: c gcc compiler-construction clang llvm


【解决方案1】:

虽然通常 Clang 会尝试从 GCC 复制命令行选项,但 GCC 和 LLVM 中存在不同的优化传递,因此不共享特定的优化标志。特别是,这意味着-O2 在两个编译器中的行为不同。

如果您想查看 GCC 在-O2 下应用的优化列表,请查看its documentation;如果您想查看 Clang 应用的列表,请查看 this related Stackoverflow question about how to see the list

【讨论】:

    猜你喜欢
    • 2016-08-01
    • 1970-01-01
    • 2016-11-09
    • 2015-12-07
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2015-06-22
    相关资源
    最近更新 更多