We should not be writing to gfc_ss_terminator. It is working without this patch because gfc_ss_terminator's next pointer is NULL, so the loop stops just after it, and because we are writing zero to gfc_ss_terminator, but it is already all zeros anyway. OK?
2011-10-19 Mikael Morin <mik...@gcc.gnu.org>
* trans-array.c (gfc_trans_scalarizing_loops): Stop loop before end marker, not after it.
diff --git a/trans-array.c b/trans-array.c index cfbe909..f611302 100644 --- a/trans-array.c +++ b/trans-array.c @@ -3114,7 +3114,7 @@ gfc_trans_scalarizing_loops (gfc_loopinfo * loop, stmtblock_t * body) gfc_add_expr_to_block (&loop->pre, tmp); /* Clear all the used flags. */ - for (ss = loop->ss; ss; ss = ss->loop_chain) + for (ss = loop->ss; ss != gfc_ss_terminator; ss = ss->loop_chain) ss->useflags = 0; }