[aarch64] PR target/91386 Use copy_rtx to avoid modifying original insns in peep2...
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 9 Aug 2019 16:14:59 +0000 (16:14 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 9 Aug 2019 16:14:59 +0000 (16:14 +0000)
commitf6af9c21fdff6cb6ec93ad2c74844e60e403fc1b
tree6a22d41fc557ffdf316eafcb36258ab2eae70e09
parentd092f6fce920a07d6dd319105ccf1cb9db05d029
[aarch64] PR target/91386 Use copy_rtx to avoid modifying original insns in peep2 pattern

PR target/91386 is a situation where a peephole2 pattern substitution
is discarded late because the selected instructions contain
frame-related notes that we cannot redistribute (because the pattern
has more than one insn in the output).  Unfortunately, the original
insns were being modified during the generation, so after the undo we
are left with corrupt RTL.

We avoid this by ensuring that the modifications are always made on a
copy, so that the original insns are never changed.

PR target/91386
* config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Use copy_rtx
to preserve the contents of the original insns.

From-SVN: r274238
gcc/ChangeLog
gcc/config/aarch64/aarch64.c