LLVM 用の LDC D コンパイラは、ターゲットが静的に認識されていることを証明できる場合、状況によっては間接関数呼び出しをインライン化できます。これが発生する可能性がある場所のおもちゃの例 (D) を次に示します。
void main() {
uint num;
void incNum() {
num++;
}
auto myDelegate = &incNum;
myDelegate();
}
この場合、myDelegate()
呼び出しは名目上は間接呼び出しですが、対象は人間の読者と LLVM/LDC のフロー分析にとって明らかであるため、インライン化されます。
最新のコンパイラで静的に認識可能なターゲットへの間接関数呼び出しをインライン化する機能は、どの程度普及していますか? これを実行できる事前コンパイラは LLVM だけですか? JITコンパイラではより一般的ですか?