Consider the following example source code:
struct foo;
struct bar;
#pragma alias (struct foo, struct bar)
struct foo {
        int f1;
        int f2;
} *fp;
struct bar {
        short b1;
        short b2;
        int   b3;
} *bp;The pragma in this example tells the compiler that foo and bar are allowed to alias each other. The compiler makes the following assumptions about alias information: