GNU Compiler Collection (GCC) Internals: Compound Lvalues

Next: Conditional Expressions, Previous: Compound Expressions, Up: Operands [Contents][Index]

#### 12.6.2 Compound Lvalues

Currently compound lvalues involving array and structure field references are not broken down; an expression like `a.b[2] = 42` is not reduced any further (though complex array subscripts are). This restriction is a workaround for limitations in later optimizers; if we were to convert this to

    T1 = &a.b;
    T1[2] = 42;

alias analysis would not remember that the reference to `T1[2]` came by way of `a.b`, so it would think that the assignment could alias another member of `a`; this broke `struct-alias-1.c`. Future optimizer improvements may make this limitation unnecessary.