diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-05-21 16:29:11 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-05-21 16:29:11 +0200 |
commit | 7772bae06caa4eb496d417efe23e9bb33693dc3c (patch) | |
tree | 4fad66eaca5a76ae4d23737387633a4cb659fe0f /gcc/tree-vect-slp.c | |
parent | 017a202055c0bdd4529960e6d38992a910649966 (diff) | |
download | gcc-7772bae06caa4eb496d417efe23e9bb33693dc3c.zip gcc-7772bae06caa4eb496d417efe23e9bb33693dc3c.tar.gz gcc-7772bae06caa4eb496d417efe23e9bb33693dc3c.tar.bz2 |
re PR tree-optimization/53366 (wrong code generation by tree vectorizer using AVX)
PR tree-optimization/53366
* tree-vect-slp.c (vect_supported_load_permutation_p): Don't shortcut
tests if complex_numbers == 2, but there are non-complex number loads
too.
* gcc.dg/torture/pr53366-1.c: New test.
* gcc.dg/torture/pr53366-2.c: New test.
* gcc.target/i386/pr53366-1.c: New test.
* gcc.target/i386/pr53366-2.c: New test.
From-SVN: r187717
Diffstat (limited to 'gcc/tree-vect-slp.c')
-rw-r--r-- | gcc/tree-vect-slp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index e189c50..4690a4e 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -1199,7 +1199,8 @@ vect_supported_load_permutation_p (slp_instance slp_instn, int group_size, /* We checked that this case ok, so there is no need to proceed with permutation tests. */ - if (complex_numbers == 2) + if (complex_numbers == 2 + && VEC_length (slp_tree, SLP_INSTANCE_LOADS (slp_instn)) == 2) { VEC_free (slp_tree, heap, SLP_INSTANCE_LOADS (slp_instn)); VEC_free (int, heap, SLP_INSTANCE_LOAD_PERMUTATION (slp_instn)); |