Oracle® Solaris Studio 12.4: C User's Guide

Exit Print View

Updated: March 2015
 
 

5.4.5 Example: Unions

Consider the following example source code.

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;

The compiler’s assumptions based on various alias levels are the following:

  • If this example is compiled with the -xalias_level=weak option, fp->f3 and bp->b2 can alias each other.

  • If this example is compiled with the -xalias_level=layout option, no fields can alias each other.

  • If this example is compiled with the -xalias_level=strict option, fp->f3 and bp->b2 can alias each other.

  • If this example is compiled with the -xalias_level=std option, no fields can alias each other.