[ARM] Fix Thumb-1 ldm (PR89190)
authorWilco Dijkstra <wdijkstr@arm.com>
Wed, 13 Feb 2019 16:22:25 +0000 (16:22 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Wed, 13 Feb 2019 16:22:25 +0000 (16:22 +0000)
commit125b98b127933b7c2d375d3471dc24afa2825993
treebd91c1bffa811b442bd57bc6c489faa648b9bdb3
parent6174de7c40e6e4c70cbab2250ca77a26a9015c0b
[ARM] Fix Thumb-1 ldm (PR89190)

This patch fixes an ICE in the Thumb-1 LDM peepholer.  Thumb-1 LDMs
always update the base register except if the base is loaded.
The current implementation rejects LDMs where the base is not dead,
however this doesn't exclude the case where the base is loaded as
well as dead.  Fix this by explicitly checking whether the base is
loaded.  Also enable LDMs which load the first register.

    gcc/
PR target/89190
* config/arm/arm.c (ldm_stm_operation_p) Set
addr_reg_in_reglist correctly for first register.
(load_multiple_sequence): Remove dead base check.
(gen_ldm_seq): Correctly set write_back for Thumb-1.

    testsuite/
PR target/89190
* gcc.target/arm/pr89190.c: New test.

From-SVN: r268848
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/testsuite/ChangeLog