指定されたルーチンをインライン展開します。
このオプションは C++ インライン関数には影響しません。+d オプションとも関係ありません。
このオプションを指定すると、オプティマイザは、コンマで区切って指定されたユーザー作成関数とサブルーチンをインライン展開します。インライン展開とは、コンパイラが関数呼び出しを実際のサブプログラムのコードで実質的に置き換える最適化技法の 1 つです。インライン展開を使えば、オプティマイザが効率的なコードを生成する可能性が高くなります。
次の制約があります。警告は出されません。
実際にインライン展開することが有利か、あるいは安全かはコンパイラが判定します。
そのルーチンのソースは、コンパイルするファイルになければなりません。
demo% cat example.cc static int twice ( int i ) { return 2*i; } int main() {return twice( 3 ); } demo% CC -compat=4 -O example.cc demo% nm -C a.out | grep twice [37] | 68068|8|FUNC|LOCL|0|7|twice(int) [__0FFtwicei] demo% CC -compat=4 -O -xinline=__0FFtwicei example.cc
リストに指定した関数が extern "C" で宣言されていない場合は、関数名が符号化されます。実行可能ファイルに対して nm コマンドを使用すれば、符号化された関数名を知ることができます。関数が extern "C" で宣言されている場合は、名前はコンパイラによって符号化されません。
最適化レベルが -x03 より低い場合、-xinline オプションは何の働きもしません。 -x04 では、オプティマイザは、インライン展開するべき関数を決定します (この決定は、 -xinline オプションを指定しなかった場合も行われます)。-x04 では、コンパイラもまた、インライン展開した場合にパフォーマンスの向上につながる関数を特定しようとします。-xinline を使用して関数を強制的にインライン展開した場合、実際にはパフォーマンスが低下することがあります。
nm(1)、 +d