diff options
author | Richard Biener <rguenther@suse.de> | 2013-11-22 13:17:41 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-11-22 13:17:41 +0000 |
commit | 1e37d699ca9cceaccd1d6519f9d143de24944de3 (patch) | |
tree | 6a5b9781260e9aafd97a52520fefd39183df861d /gcc | |
parent | 7dced2146bd2e020e6b0347cbb1c3c28b1a60376 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/20131122-0.c | 34 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-ch.c | 10 |
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); |