最近、私は PGO の関連トピックを検索しており、それらがソース コードにどのように適用され、あるアプリケーションが次々と適用されているのか疑問に思い始めました。
たとえば、GCC や CLang で PGO 最適化を有効にすると、すべての最適化 (インライン化、仮想呼び出しスペキュレーション、デッド コード分離など) が適用されますよね!?
それらがすべてソースコードに適用されていなくても、いくつかは適用されているとしましょう。すると、順次適用されるのではないでしょうか?
では、CFG (コントロール フロー グラフ) を変更して、基本ブロックの周波数が失われるようにすることはできますか?
たとえば、「A」という名前の PGO の後に「B」という名前の PGO が適用され、「A」がソース コードを変更して基本ブロック周波数の一部が失われた場合、「B」はどのように適用されるか (両方が PGO であると仮定) BB周波数に依存します)?
(下手な英語でごめんなさい)