J.C. Pizarro wrote:
Are they mixed into a single
variable declaration? Are they treated as separate variables and
handled later by the register allocator?
If possible, the former. If not possible, they are kept as separate
variables. This happens if the subscripted variables have overlapping
live ranges because of optimizations that were made on the SSA form.
Is not it easy to write 3 stages GENERIC->GIMPLE->RTL instead of 5 stages?
Is meaningful the optimization of the complex bi-transformation
GIMPLE->SSA->GIMPLE?
I don't know what you mean, but yes, there is value in going to SSA and
back. SSA makes global optimization much easier, and that's the main
improvement introduced in GCC 4.0 and later refined. Of course not all
optimizations benefit from SSA, some (such as OpenMP implementation)
only benefit from having a high-level intermediate representation
(GIMPLE). But most do, in one way or the other.
In the future, GCC might instead do GENERIC->GIMPLE->SSA->RTL, without
going back to GIMPLE. But the SSA step is there to stay. :-)
Paolo