[PR tree-optimization/68599] Avoid over-zealous optimization with -funsafe-loop-optim...
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Dec 2015 15:40:08 +0000 (15:40 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Dec 2015 15:40:08 +0000 (15:40 +0000)
PR tree-optimization/68599
* loop-init.c (rtl_loop_init): Set LOOPS_HAVE_RECORDED_EXITS
in call to loop_optimizer_init.
* loop-iv.c (get_simple_loop_desc): Only allow unsafe loop
optimization to drop the assumptions/infinite notations if
the loop has a single exit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231231 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/loop-init.c
gcc/loop-iv.c

index f764ba9..5fe3c1c 100644 (file)
@@ -1,3 +1,12 @@
+2015-12-03  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/68599
+       * loop-init.c (rtl_loop_init): Set LOOPS_HAVE_RECORDED_EXITS
+       in call to loop_optimizer_init.
+       * loop-iv.c (get_simple_loop_desc): Only allow unsafe loop
+       optimization to drop the assumptions/infinite notations if
+       the loop has a single exit.
+
 2015-12-03  Richard Sandiford  <richard.sandiford@arm.com>
 
        * doc/md.texi (vec_load_lanes@var{m}@var{n}): Document that
index e32c94a..120316d 100644 (file)
@@ -395,7 +395,7 @@ rtl_loop_init (void)
       dump_flow_info (dump_file, dump_flags);
     }
 
-  loop_optimizer_init (LOOPS_NORMAL);
+  loop_optimizer_init (LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS);
   return 0;
 }
 
index c7d5164..dfa3ca3 100644 (file)
@@ -3054,7 +3054,7 @@ get_simple_loop_desc (struct loop *loop)
            }
        }
 
-      if (flag_unsafe_loop_optimizations)
+      if (flag_unsafe_loop_optimizations && single_exit (loop))
        {
          desc->assumptions = NULL_RTX;
          desc->infinite = NULL_RTX;