http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60370
--- Comment #6 from Mikael Morin <mikael at gcc dot gnu.org> ---
(In reply to janus from comment #5)
> However, it also seems to introduce another ordering issue: In particular
> the bounds of 'b' are now set as
>
> b.dim[1].lbound = 1;
> b.dim[1].ubound = (D.2352 - D.2351) + 1;
>
> before those temps are actually set via
>
> D.2351 = a.dim[0].lbound;
> D.2352 = a.dim[0].ubound;
Hmm, no those are correctly ordered, but I see what you mean; and it's actually
diagnosed by the compiler when warnings and optimizations are enabled:
Namely this happens:
D.2339 = b.dim[1].lbound;
D.2340 = b.dim[1].ubound;
before b has been initialized.
So the reallocation code has to also happen before b's bounds are evaluated.
Even more tricky... :-(