Sun Studio 12 Update 1: C++ ユーザーズガイド

A.2.130 -xinline[=func_spec[,func_spec...]]

どのユーザー作成ルーチンをオプティマイザによって -xO3 レベル以上でインライン化するかを指定します。

A.2.130.1 値

func_spec には次の値のいずれかを指定します。

表 A–33 -xinline の値

値  

意味  

%auto

最適化レベル -xO4 以上で自動インライン化を有効にします。この引数は、オプティマイザが選択した関数をインライン化できることをオプティマイザに知らせます。%auto の指定がないと、明示的インライン化が -xinline=[no%]func_name... によってコマンド行に指定されていると、自動インライン化は通常オフになります。

func_name

オプティマイザに関数をインライン化するように強く要求します。関数が extern "C" で宣言されていない場合は、func_name の値を符号化する必要があります。実行可能ファイルに対し nm コマンドを使用して符号化された関数名を検索できます。extern "C" で宣言された関数の場合は、名前はコンパイラで符号化されません。

no%func_name

リスト上のルーチン名の前に no% を付けると、そのルーチンのインライン化が禁止されます。func_name の符号化名に関する規則は、no%func_name にも適用されます。

-xipo [=1|2] を使用しないかぎり、コンパイルされているファイルのルーチンだけがインライン化の対象とみなされます。オプティマイザでは、どのルーチンがインライン化に適しているかを判断します。

デフォルト

-xinline オプションを指定しないと、コンパイラでは -xinline=%auto が使用されます。

-xinline= に引数を指定しないと、最適化のレベルにかかわらず関数がインライン化されます。

int foo() を宣言している関数のインライン化を無効にして自動インライン化を有効にするには次のコマンドを使用します。


example% CC -xO5 -xinline=%auto,no%__1cDfoo6F_i_ -c a.cc

int foo() として宣言した関数のインライン化を強く要求し、ほかのすべての関数をインライン化の候補にするには次のコマンドを使用します。


example% CC -xO5 -xinline=%auto,__1cDfoo6F_i_ -c a.cc

int foo() として宣言した関数のインライン化を強く要求し、そのほかの関数のインライン化を禁止するには次のコマンドを使用します。


example% CC -xO5 -xinline=__1cDfoo6F_i_ -c a.cc

相互の関連性

-xinline オプションは -xO3 未満の最適化レベルには影響を与えません。-xO4 以上では、-xinline オプションを指定しなくてもオプティマイザでどの関数をインライン化する必要があるかを判断します。-xO4 では、コンパイラはどの関数が、インライン化されたときにパフォーマンスを改善するかを判断しようとします。

ルーチンは、次のいずれかの条件が当てはまる場合はインライン化されます。

警告

-xinline を指定して関数のインライン化を強制すると、実際にパフォーマンスを低下させる可能性があります。

関連項目

「A.2.136 -xldscope={v}」