2017-11-14 11 views
1

TUとC++コードで構成されたプログラムに対して、リンク時間最適化(lto)を効果的に使用することができるのだろうか?コード。ですから、C関数を結果のプログラムにインライン化したにする方法はありますか?混合C++/Cプログラムのリンク時最適化(lto)

実際の使用例は、C++で書かれたマイクロコントローラファームウェアです。しかし、CのセマンティクスのためにCで書かなければならないコードがあります(例えば、非アクティブなユニオンメンバーへのアクセス)。

(これは、インラインとしての機能をマークするマニュアルとは関係ありません)

+0

[リンク時の最適化とインライン](の可能性のある重複https://stackoverflow.com/questions/7046547/:

一部では、以下の関連C++をミックスし、Dは依然としてLTOを使用する限り行きますリンク時最適化とインライン) –

+0

Cでは明確に定義されているユニオンアクセスのモードはありますが、C++では不可能または未定義です。 –

+0

Cで明示的にサポートされているが、C++ではUBで非アクティブなメンバーistにアクセスすることによるタイプ・ペニング。 – wimalopaan

答えて

4

これは全く問題になることはありません。 GCCとClangのリンク時間最適化は、コードの中間表現で動作します。つまり、-fltoを使用して、追加のLTO情報(gcc)またはLLVMバイトコード(Clang)を持つオブジェクトファイルを作成します。この時点で、ソース言語は問題なく終了します。 http://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html

+0

avrバックエンドを使用していることを確認しました。ここで欠けているのはconstexprだけです。 – wimalopaan

関連する問題