http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56426
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> 2013-02-25 12:15:05 UTC --- Goes away with -fno-tree-pre. The thing is, PRE calls scev_finalize. But before loop optimizing, especially estimate_numbers_of_iterations, which calls estimate_numbers_of_iterations_loop, SCEV should be initialized. Or at least estimate_numbers_of_iterations_loop should be guarded by if (scev_initialized_p ()) as on other places. SCEV is normally initialized in tree_ssa_loop_init, but only if number_of_loops > 1. if (number_of_loops () <= 1) return 0; scev_initialize (); Would it make sense to always initialize SCEV, i.e.: --- gcc/tree-ssa-loop.c.mp 2013-02-25 13:06:47.212132327 +0100 +++ gcc/tree-ssa-loop.c 2013-02-25 13:06:50.148141586 +0100 @@ -70,10 +70,11 @@ tree_ssa_loop_init (void) | LOOPS_HAVE_RECORDED_EXITS); rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); + scev_initialize (); + if (number_of_loops () <= 1) return 0; - scev_initialize (); return 0; } ?