aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-11-22 13:17:41 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-11-22 13:17:41 +0000
commit1e37d699ca9cceaccd1d6519f9d143de24944de3 (patch)
tree6a5b9781260e9aafd97a52520fefd39183df861d /gcc
parent7dced2146bd2e020e6b0347cbb1c3c28b1a60376 (diff)
downloadgcc-1e37d699ca9cceaccd1d6519f9d143de24944de3.zip
gcc-1e37d699ca9cceaccd1d6519f9d143de24944de3.tar.gz
gcc-1e37d699ca9cceaccd1d6519f9d143de24944de3.tar.bz2
revert: tree-ssa-loop-ch.c (copy_loop_headers): Decrement nb_iterations_upper_bound by one.
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. * gcc.dg/torture/20131122-0.c: New testcase. From-SVN: r205256
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/torture/20131122-0.c34
-rw-r--r--gcc/tree-ssa-loop-ch.c10
4 files changed, 46 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9afe264..d04b496 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 220a5ec..3095cff 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..42d92fa
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/20131122-0.c
@@ -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;
+}
+
diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c
index ccaa9c89..df45c28 100644
--- a/gcc/tree-ssa-loop-ch.c
+++ b/gcc/tree-ssa-loop-ch.c
@@ -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);