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;
 }
 

Reply via email to