forwprop: Ignore scalar mode vectors in simplify_vector_constructor [PR95528]
authorJakub Jelinek <jakub@redhat.com>
Mon, 8 Jun 2020 09:05:10 +0000 (11:05 +0200)
committerJakub Jelinek <jakub@redhat.com>
Mon, 8 Jun 2020 09:05:10 +0000 (11:05 +0200)
commit8be374e02761c9d63d2753d71e4bd4874a1577b1
treee5c255a79cc9cac5ee35611d8ab5aa9beae861cb
parent296d644b9f526e44fbe574426f24799c1d545fd3
forwprop: Ignore scalar mode vectors in simplify_vector_constructor [PR95528]

As mentioned in the PR, the problem is that at least the x86 backend asumes
that the vec_unpack* and vec_pack* optabs with integral modes are for the
AVX512-ish vector masks rather than for very small vectors done in GPRs.
The only other target that seems to have a scalar mode vec_{,un}pack* optab
is aarch64 as discussed in the PR, so there is also a condition for that.
All other targets have just vector mode optabs.

2020-06-08  Jakub Jelinek  <jakub@redhat.com>

PR target/95528
* tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless the
type is vector boolean.

* g++.dg/opt/pr95528.C: New test.
gcc/testsuite/g++.dg/opt/pr95528.C [new file with mode: 0644]
gcc/tree-ssa-forwprop.c