diff options
author | Richard Guenther <rguenther@suse.de> | 2012-05-18 13:10:01 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-05-18 13:10:01 +0000 |
commit | a4293fa6610acbe4412370b586122fc40615eeb9 (patch) | |
tree | 4e98652695c14046eb004e4e4112b7c6cfbc9512 /gcc/tree-loop-distribution.c | |
parent | b69610113089a08d9e142dc8ad52caa3cc8e70c3 (diff) | |
download | gcc-a4293fa6610acbe4412370b586122fc40615eeb9.zip gcc-a4293fa6610acbe4412370b586122fc40615eeb9.tar.gz gcc-a4293fa6610acbe4412370b586122fc40615eeb9.tar.bz2 |
re PR target/53346 (Bad if conversion in cptrf2 of rnflow.f90)
2012-05-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53346
* tree-loop-distribution.c (ldist_gen): Make sure to apply
builtin transform even when only a single partition with
all reads/writes exists.
* gcc.dg/tree-ssa/ldist-18.c: New testcase.
* gcc.target/i386/incoming-10.c: Adjust.
* gcc.target/i386/incoming-11.c: Likewise.
* gcc.target/i386/pr46295.c: Likewise.
From-SVN: r187655
Diffstat (limited to 'gcc/tree-loop-distribution.c')
-rw-r--r-- | gcc/tree-loop-distribution.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index 0d21763..d7506e6 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -1131,8 +1131,11 @@ ldist_gen (struct loop *loop, struct graph *rdg, BITMAP_FREE (processed); nbp = VEC_length (bitmap, partitions); - if (nbp <= 1 - || partition_contains_all_rw (rdg, partitions)) + if (nbp == 0 + || (nbp == 1 + && !can_generate_builtin (rdg, VEC_index (bitmap, partitions, 0))) + || (nbp > 1 + && partition_contains_all_rw (rdg, partitions))) goto ldist_done; if (dump_file && (dump_flags & TDF_DETAILS)) |