【问题标题】:Link-time optimization (lto) for mixed C++/C programs混合 C++/C 程序的链接时优化 (lto)
【发布时间】:2017-11-14 15:53:16
【问题描述】:

我想知道是否可以有效地使用链接时优化 (lto) 来处理由带有 C++ 代码的 TU 组成的程序,该程序在带有 C 代码的 TU 中调用某些函数。那么,有没有办法将 C 函数 内联 放入生成的程序中?

真正的用例是用 C++ 编写的微控制器固件。但是由于 C 语义,有些代码必须用 C 编写(例如,访问非活动联合成员)。

(这与手动标记函数为内联无关)

【问题讨论】:

  • 我想知道哪些联合访问模式在 C 中定义明确,但在 C++ 中不可能或未定义。
  • 类型双关语通过访问 C 中明确支持但 C++ 中的 UB 支持的非活动成员。
  • 没关系,我想我知道你的意思,而不是常见的初始序列。

标签: c++ inline link-time-optimization


【解决方案1】:

这根本不应该是一个问题。在 GCC 和 Clang 中,链接时优化都对代码的中间表示进行操作。也就是说,通过使用-flto,您可以创建带有附加 LTO 信息 (gcc) 或 LLVM 字节码 (Clang) 的目标文件,此时源语言不再重要。

有些人甚至将相关性更低的 C++ 和 D 混合在一起,但仍然使用 LTO:http://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html

【讨论】:

  • 刚刚验证了使用 avr 后端。这里唯一缺少的是 constexpr。
猜你喜欢
  • 2015-09-30
  • 2014-07-07
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
相关资源
最近更新 更多