rtlanal: fix subreg handling in set_noop_p ()
authorIlya Leoshkevich <iii@linux.ibm.com>
Tue, 8 Sep 2020 23:23:51 +0000 (01:23 +0200)
committerIlya Leoshkevich <iii@linux.ibm.com>
Tue, 15 Sep 2020 17:30:37 +0000 (19:30 +0200)
commitd1a31689a736cdfb5e7cfa01f1168e338510e63b
tree0c90ca9e27c98e4402580771fa12ccb264fb115e
parentd876184c095d6ac41e64eaf4e2c78864d2d935c1
rtlanal: fix subreg handling in set_noop_p ()

The following s390 rtx is errneously considered a no-op:

(set (subreg:DF (reg:TF %f0) 8) (subreg:DF (reg:V1TF %f0) 8))

Here, SET_DEST is a second register in a floating-point register pair,
and SET_SRC is the second half of a vector register, so they refer to
different bits.

Fix by treating subregs of registers in different modes conservatively.

gcc/ChangeLog:

2020-09-11  Ilya Leoshkevich  <iii@linux.ibm.com>

* rtlanal.c (set_noop_p): Treat subregs of registers in
different modes conservatively.
gcc/rtlanal.c