alias

C に適用 C++ に適用

目的

別名割り当てアサーションをコンパイル単位に適用するようにコンパイラーに指示する。コンパイラーは、他を指定しない限り、別名割り当てアサーションを利用して、可能な位置で最適化の対象を拡大します。

構文


構文図

別名割り当ての使用可能なオプションは、以下のとおりです。


[NO]TYPeptr notypeptr が指定された場合、さまざまな型に対するポインターに別名が割り当てられません。つまり、コンパイル単位では、異なる型の 2 つのポインターが同じ保管場所を指すことはありません。
[NO]ALLPtrs noallptrs が指定された場合、ポインターに別名が割り当てられません (これは -qalias=typeptr も暗黙指定します)。したがって、コンパイル単位では、2 つのポインターが同じ保管場所を指すことはありません。
[NO]ADDRtaken noaddrtaken が指定された場合、変数は、アドレスが取得されない限り、ポインターから切り離されます。アドレスがコンパイル単位に記録されていない 変数のクラスは、すべてポインターを介した間接アクセスでは結合されないと見なされます。
[NO]ANSI ansi が指定された場合、最適化で型ベースの別名割り当てが使用されます。これは、データ・オブジェクトへのアクセスに安全に使用することができる左辺値に制限を加えます。最適化プログラムは、ポインターが同じ型のオブジェクトを指すことしか できないと想定します。これ (ansi) は、xlc xlC、および c89 コンパイラーのデフォルトです。このオプションは、-O オプションも指定しない限り無効です。

noansi を選択すると、最適化プログラムはワーストケースの別名割り当てを想定します。これは、型に関係なく、所定の型のポインターが、外部オブジェクトまたはアドレスがすでに取得されている任意のオブジェクトを指すことができると想定します。これが cc コンパイラーのデフォルトです。

以下は、型ベースの別名割り当ての対象となりません。

myprogram.c のコンパイル時に最悪の場合を考慮して別名割り当てを想定するように指定するには、以下を入力します。

xlc myprogram.c -O -qalias=noansi

関連参照

コンパイラーのコマンド行オプション
#pragma disjoint IBM Copyright 2003