http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52621

--- Comment #11 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-04-11 
12:17:12 UTC ---
evolution_function_is_invariant_rec_p returns true for
(integer(kind=8)) {0, +, {2, +, 2}_2}_2 and loop 1 even if loop 2 is nested
inside loop 1.  Thus,

@@ -1011,6 +1029,8 @@ evolution_function_is_invariant_rec_p (t
   if (TREE_CODE (chrec) == POLYNOMIAL_CHREC)
     {
       if (CHREC_VARIABLE (chrec) == (unsigned) loopnum
+         || flow_loop_nested_p (get_loop (loopnum),
+                                get_loop (CHREC_VARIABLE (chrec)))
          || !evolution_function_is_invariant_rec_p (CHREC_RIGHT (chrec),
                                                     loopnum)
          || !evolution_function_is_invariant_rec_p (CHREC_LEFT (chrec),

is required, IMHO, too.

Reply via email to