次の例のソースコードを考えてみましょう。
struct foo {
short f1;
short f2;
int f3;
} *fp;
struct bar {
int b1;
int b2;
} *bp;
union moo {
struct foo u_f;
struct bar u_b;
} u;さまざまな別名レベルに基づくコンパイラの仮定を、次に示します。
この例が -xalias_level=weak オプションでコンパイルされる場合、fp->f3 および bp->b2 は相互に別名設定できます。
この例が -xalias_level=layout オプションでコンパイルされる場合、フィールドは相互に別名設定できません。
この例が -xalias_level=strict オプションでコンパイルされる場合、fp->f3 および bp->b2 は相互に別名設定できます。
この例が -xalias_level=std オプションでコンパイルされる場合、フィールドは相互に別名設定できません。