aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/constexpr.c
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2020-08-07 18:49:04 +0200
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-17 15:07:48 -0300
commit10e74e97504463ca890ce0a0e03528f6b0242419 (patch)
tree640ef3a1993129670b00594fbee264c075f5c2aa /gcc/cp/constexpr.c
parentef0a55a70b95cdb1a9ce394937dd9648e8eac4b1 (diff)
downloadgcc-10e74e97504463ca890ce0a0e03528f6b0242419.zip
gcc-10e74e97504463ca890ce0a0e03528f6b0242419.tar.gz
gcc-10e74e97504463ca890ce0a0e03528f6b0242419.tar.bz2
Disable some VEC_COND_EXPR transformations after vector lowering
ARM understands VEC_COND_EXPR<v == w, -1, 0> but not a plain v == w which is fed to something other than VEC_COND_EXPR (say BIT_IOR_EXPR). This patch avoids introducing the second kind of statement after the vector lowering pass, which is the last chance to turn v == w back into something the target handles. This is just a workaround to avoid ICEs, a v == w produced before vector lowering will yield pretty bad code. Either the arm target needs to learn to handle vector comparisons (aarch64 already does), or the middle-end needs to fall back to vcond when plain comparisons are not supported (or ...). 2020-08-07 Marc Glisse <marc.glisse@inria.fr> * generic-match-head.c (optimize_vectors_before_lowering_p): New function. * gimple-match-head.c (optimize_vectors_before_lowering_p): Likewise. * match.pd ((v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Use it.
Diffstat (limited to 'gcc/cp/constexpr.c')
0 files changed, 0 insertions, 0 deletions