arm: Fix uaddvdi4 expander [PR93494]
authorJakub Jelinek <jakub@redhat.com>
Thu, 30 Jan 2020 11:58:20 +0000 (12:58 +0100)
committerJakub Jelinek <jakub@redhat.com>
Thu, 30 Jan 2020 11:58:20 +0000 (12:58 +0100)
commitefd26bbc81e94a324b3d3331a32eac089af8db1d
tree0f1b91c863f79e09ff6cd981aa16a98a5e4ae530
parent5ab5d81b364ba500b288d9bcc1232ce7953a3b3f
arm: Fix uaddvdi4 expander [PR93494]

uaddvdi4 expander has an optimization for the low 32-bits of the 2nd input
operand known to be 0.  Unfortunately, in that case it only emits copying of
the low 32 bits to the low 32 bits of the destination, but doesn't emit the
addition with overflow detection for the high 64 bits.
Well, to be precise, it emits it, but into an RTL sequence returned by
gen_uaddvsi4, but that sequence isn't emitted anywhere.

2020-01-30  Jakub Jelinek  <jakub@redhat.com>

PR target/93494
* config/arm/arm.md (uaddvdi4): Actually emit what gen_uaddvsi4
returned.

* gcc.c-torture/execute/pr93494.c: New test.
gcc/ChangeLog
gcc/config/arm/arm.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr93494.c [new file with mode: 0644]