我想知道是否可以有效地使用链接时间优化 (lto) 来处理由带有 C++ 代码的 TU 组成的程序,该程序在带有 C 代码的 TU 中调用某些函数。那么,有没有办法将 C 函数内联到生成的程序中呢?
真正的用例是用 C++ 编写的微控制器固件。但是由于 C 语义,有些代码必须用 C 编写(例如,访问非活动联合成员)。
(这与手动标记功能为内联无关)
我想知道是否可以有效地使用链接时间优化 (lto) 来处理由带有 C++ 代码的 TU 组成的程序,该程序在带有 C 代码的 TU 中调用某些函数。那么,有没有办法将 C 函数内联到生成的程序中呢?
真正的用例是用 C++ 编写的微控制器固件。但是由于 C 语义,有些代码必须用 C 编写(例如,访问非活动联合成员)。
(这与手动标记功能为内联无关)
这根本不应该是一个问题。在 GCC 和 Clang 中,链接时优化都对代码的中间表示进行操作。也就是说,通过使用-flto
创建带有附加 LTO 信息 (gcc) 或 LLVM 字节码 (Clang) 的目标文件,源语言不再重要。
有些人甚至将相关性更低的 C++ 和 D 混合在一起,但仍然使用 LTO:http: //johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html