-case


コンパイル・オプション / 最適化オプション

[指定形式]

-case= { ifthen | table | auto }

 

-

省略時解釈

case=autoです。

[詳細説明]

-

switch文のコード展開方式を指定します。

-

case=ifthenを指定した場合、switch文をif_then方式で展開します。if_then方式は、switch文の評価式の値とcaseラベルの値を比較し、一致すればcaseラベルの文へ飛ぶ処理をcaseラベルの回数繰り返す展開方式です。この方式は、switch文に含まれるcaseラベルの数に比例してオブジェクトコードのサイズが増大します。

-

case=tableを指定した場合、switch文をテーブル方式で展開します。テーブル方式は、caseラベルの飛び先を分岐テーブルに確保し、1 回の分岐テーブルの参照でswitch文の評価式と一致するcaseラベルの文へ飛ぶ展開方式です。この方式は、switch文に含まれるcaseラベルの数に比例して分岐テーブルのサイズが増えますが、実行速度は常に一定です。分岐テーブルは、switch文分岐テーブル領域のセクションに出力されます。

-

case=autoを指定した場合、if_then方式、テーブル方式いずれかをコンパイラが自動的に選択します。

[備考]

-

case=table指定時に作成される分岐テーブルは、nostuffオプション指定時はWセクションに出力されますが、nostuffオプション指定がない場合は、switch文の規模によりW、W_2 または W_1セクションのいずれかに振り分けて出力されます。