]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2013-11-22 Richard Biener <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2013 13:17:41 +0000 (13:17 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2013 13:17:41 +0000 (13:17 +0000)
Revert
2013-11-21  Richard Biener  <rguenther@suse.de>

* tree-ssa-loop-ch.c (copy_loop_headers): Decrement
nb_iterations_upper_bound by one.

        * gcc.dg/torture/20131122-0.c: New testcase.

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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/20131122-0.c [new file with mode: 0644]
gcc/tree-ssa-loop-ch.c

index 9afe2645d3c1da7e5371dbc5c56257b572e765bc..d04b496e235d6a04d0f9d2c98700a7642edbade2 100644 (file)
@@ -1,3 +1,11 @@
+2013-11-22  Richard Biener  <rguenther@suse.de>
+
+       Revert
+       2013-11-21  Richard Biener  <rguenther@suse.de>
+
+       * tree-ssa-loop-ch.c (copy_loop_headers): Decrement
+       nb_iterations_upper_bound by one.
+
 2013-11-22  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/i386/i386.c (processor_alias_table): Enable PTA_POPCNT
index 220a5eca77fb4d3a7faaffaae5ee7486ab3dd701..3095cffa11d353862f30569d90501dfb5126850f 100644 (file)
@@ -1,3 +1,7 @@
+2013-11-22  Richard Biener  <rguenther@suse.de>
+
+       * gcc.dg/torture/20131122-0.c: New testcase.
+
 2013-11-22  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.dg/vect/vect-124.c: New test.
diff --git a/gcc/testsuite/gcc.dg/torture/20131122-0.c b/gcc/testsuite/gcc.dg/torture/20131122-0.c
new file mode 100644 (file)
index 0000000..42d92fa
--- /dev/null
@@ -0,0 +1,34 @@
+/* { dg-do run } */
+
+extern int memcmp (const void *, const void *, __SIZE_TYPE__);
+extern void abort (void);
+
+void __attribute__ ((noinline))
+f (long *s, long *t, int len1, int len2)
+{
+  int i, j;
+
+  j = 2;
+  for (i = len1 - 1; i >= 0; i--)
+    {
+      s[j--] = (i < len2 ? t[i] : t[len2 - 1] < 0 ? -1 : 0);
+      if (j < 0)
+       break;
+    }
+}
+
+long s[3];
+long t[3];
+
+int
+main (void)
+{
+  t[0] = 1;
+  t[1] = 2;
+  t[2] = 3;
+  f (s, t, 3, 3);
+  if (memcmp (s, t, sizeof (s)) != 0)
+    abort ();
+  return 0;
+}
+
index ccaa9c8987e33f77607a9d586b665c8b6b9a6b6e..df45c286790e35692ece6fb3874fe35e887601b2 100644 (file)
@@ -243,16 +243,6 @@ copy_loop_headers (void)
         are not now, since there was the loop exit condition.  */
       split_edge (loop_preheader_edge (loop));
       split_edge (loop_latch_edge (loop));
-
-      /* We peeled off one iteration of the loop thus we can lower
-        the maximum number of iterations if we have a previously
-        recorded value for that.  */
-      double_int max;
-      if (get_max_loop_iterations (loop, &max))
-       {
-         max -= double_int_one;
-         loop->nb_iterations_upper_bound = max;
-       }
     }
 
   update_ssa (TODO_update_ssa);