問題タブ [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.
gcc - さまざまに最適化されたオブジェクト ファイルで GCC LTO を使用する方法は?
arm-none-eabi-gcc
Cortex-M4 ベースのマイクロコントローラー用に実行可能ファイルをコンパイルしています。パフォーマンスが重要でないコードは-Os
(実行可能コードのサイズに合わせて最適化された) コンパイルされ、パフォーマンスが重要な部分は別の最適化フラグを使用してコンパイルされます。-Og
/-O2
など
-flto
そのようなビルドで使用しても安全ですか? もしそうなら、どの最適化フラグをリンカーに渡す必要がありますか?
llvm - LLVM で CFI を有効にする方法
LLVM によって強制される CFI を使用して nginx をコンパイルしたいと考えています。objs ディレクトリの Makefile を変更します。変更内容: 1. コンパイラを変更:cc--> clang 2. CFI に関連するパラメーターを追加: -flto -fvisibility=hidden -fsanitize=cfi 変更された Makefile を以下に示します。
コンパイル プロセスが渡されます。ただし、リンク プロセス中にいくつかのエラーが報告されます。
clang 6.0.0 のドキュメントによると、CFI スキームはリンク時の最適化 (LTO) に依存しており、使用されるリンカーは LTO (gold プラグインなど) をサポートする必要があります。LTO に関するいくつかの資料があります。
http://llvm.org/docs/GoldPlugin.html
私はまだこの問題に対処する方法を知りません。
objective-c - LLVM LTO(Link-time Optimization) は Objective-C コードに影響を与えますか?
私の知る限り、LTOはデッドコードを減らし、いくつかのクロスファイルインライン化を行うことができます. ただし、Objective-C はランタイムに基づいています。メソッドが実際に呼び出されるかどうかは実行時まで解決されるため、リンク時に Objective-C でデッド メソッドを減らすことはできませんよね? ファイル間のインライン化の場合、実行時にメソッドの実装を置き換えることができるため、これは発生しませんでした。
では、LTO はどのように Objective-C コードに影響を与えるのでしょうか?
私はLLVMを初めて使用するので、アドバイスをいただければ幸いです。