Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

3.4.151 –xmemalign[=<a><b>]

(SPARC) メモリー境界整列の最大値の想定と、境界整列不正データへアクセスしたときの動作を指定します。

コンパイル時に境界整列を決定できるメモリーアクセスの場合、コンパイラは、そのデータ境界整列に適したロード/ストア命令のシーケンスを生成します。

境界整列がコンパイル時に決定できないメモリーアクセスの場合、コンパイラは、境界整列を想定して、必要なロード/ストア命令のシーケンスを生成します。

-xmemalign フラグを使用すると、このようなあいまいな状況の場合にコンパイラが想定するデータの最大メモリー境界整列を指定することができます。整列不正データへのメモリーアクセスが行われた場合の実行時エラーの動作も指定します。

指定される値は、2 つの部分から成ります。数値の境界整列値 <a> とアルファベットの動作フラグ <b> です。

境界整列値 <a> に指定できる値は、次のとおりです。

1

最大で 1 バイトの境界整列を想定します。

2

最大で 2 バイトの境界整列を想定します。

4

最大で 4 バイトの境界整列を想定します。

8

最大で 8 バイトの境界整列を想定します。

16

最大で 16 バイトの境界整列を想定します。

不正境界整列データにアクセスした場合のエラーの動作を表す <b> に指定できる値は、次のとおりです。

i

アクセスを解釈し、実行を継続します。

s

SIGBUS という信号を発生させます

f

64 ビットのプラットフォームでは、4 バイト以下の境界整列にだけ SIGBUS 信号を発生させます。それ以外ではアクセスを解釈して実行を継続します。その他のプラットフォームでは、fi と等価です。

-xmemalign を指定しない場合のコンパイル時のデフォルト値は、次のようになります。

  • 32 ビットのプラットフォームの場合は、8i

  • C および C++ の 64 ビットのプラットフォームの場合は、8s

  • Fortran の 64 ビットのプラットフォームの場合は、8f

値をまったく指定しない場合の -xmemalign のデフォルト値は、すべてのプラットフォームで 1i です。

-xmemalign そのものは、特定のデータ整列を強制的に行わせることはありません。強制的にデータ境界整列を行わせるには、-dalign または -aligncommon を使用してください。

また、b の値に i または f を指定してコンパイルしたオブジェクトファイルにリンクする場合は、必ず、-xmemalign を指定してください。

-dalign オプションはマクロです。

-dalign は、-xmemalign=8s -aligncommon=16 のマクロです。

-aligncommon=1-xmemalign とともに使用しないでください。これらのディレクティブは競合するため、同じプラットフォームや構成でセグメント例外が発生する場合があります。

詳細は、–aligncommon[={1|2|4|8|16}]を参照してください。