ちょっと前にclang、llc、optのソースコードを見て、どれが最適化されてパイプラインに追加されているかを見てみましょう。私の理解は、clangはoptとllcが同じパイプラインで持っている最適化をoptとllcが呼び出すのと同じ方法を呼び出すことで追加するということでした。また、clangはoptおよび/またはlcを別々に呼び出すことはありません。clang、opt、llc、llvm-linkerの関係
これは、ソースの変更が1つではなく他のもので行われているために、ある時点でoptでパイプラインのさまざまな最適化(clangと比較した場合)が発生する危険性があることを除いて、 llcとclangの比較でも同じです。この認識は正しいのでしょうか?
また、clang、opt、llvm-linker、opt(IPA?)、llcの順に選択すると、グラフが表示されます。私はこのワークフローを私がclangで見たものに結びつけることはできません。 LTOの私の理解さえ、リンカー(金を言う)は最適化を呼び出すだろうということです。ここではllvm-linkerの役割を理解できません。
洞察力は非常に高く評価されています。
ありがとうございました。 llvm-linkerのポイントは何ですか?私の最大の疑問は、それがシステムリンカーに相当するということですか? – esam
別の質問:optとclangの最適化が同期しなくなるリスクがあると思いますか?その1つのコードの変更が別のものに反映されないためですか? – esam
それは異なります。ビットコードファイルを一緒にリンクするllvm-linkとシステムコンパイラを置き換えるclangと同様のシステムリンカを置き換える試みであるlldがあります。 – echristo