GNU Compiler Collection (GCC) Internals: Compound Lvalues |
---|
Next: Conditional Expressions, Previous: Compound Expressions, Up: Operands [Contents][Index]
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.