問題タブ [lto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
887 参照

c++ - LTO が標準ライブラリでクラッシュを引き起こす

次のプログラムを検討してください。

さまざまなフラグを付けてビルドし、として実行しようとしましたecho foo | ./prog

-O0から最適化してclang 5.0またはgcc 7.1(または7.2)でビルドすると-O3、期待どおりに動作します。しかし、これらの構成のいずれかに追加-fltoすると、次のバックトレースですぐにクラッシュします。

Valgrind は、もう少し読みやすい方法で同じことを報告します。

また--std=c++14、LTOを有効にしても、以下で問題なく動作します。

それで、問題は何ですか?両方のコンパイラでの C++17 の LTO 実装のバグですか? それともlibstdc++、間違ったフラグでコンパイルされているだけですか? 私はopensuse 42.3を使用しており、標準ライブラリはリポジトリからインストールされています。

なんとか回避できますか?

0 投票する
1 に答える
1204 参照

gcc - gcc の -flto によって何が破棄されますか?

arm-none-eabi-gcc 6.3.1 を使用して stm32 用のファームウェアを構築しています。

リンク時の最適化を有効にしても、コンパイルして起動し、-ftlo を使用しない場合よりも ~10kiB 小さくなりますが、わずかな破損があります。

どうすればこれをデバッグできますか?

リンク時の最適化中に (誤って) 何を破棄するかを gcc に教えてもらう方法はありますか?