fwprop: Allow (subreg (mem)) simplifications
authorIlya Leoshkevich <iii@linux.ibm.com>
Thu, 14 Jan 2021 23:14:56 +0000 (00:14 +0100)
committerIlya Leoshkevich <iii@linux.ibm.com>
Thu, 21 Jan 2021 21:48:47 +0000 (22:48 +0100)
commitefb6bc55a93a1b8a719e0dab344c0a21344a67a9
tree2dfe597bcf21dafb47d0ea95e64e812f4e74c4e9
parentf645da0e4ab9438dfd0c047c710c7ec6a7d6d8f3
fwprop: Allow (subreg (mem)) simplifications

Suppose we have:

    (set (reg/v:TF 63) (mem/c:TF (reg/v:DI 62)))
    (set (reg:FPRX2 66) (subreg:FPRX2 (reg/v:TF 63) 0))

It is clearly profitable to propagate the first insn into the second
one and get:

    (set (reg:FPRX2 66) (mem/c:FPRX2 (reg/v:DI 62)))

fwprop actually manages to perform this, but doesn't think the result is
worth it, which results in unnecessary store/load sequences on s390.
Improve the situation by classifying SUBREG -> MEM changes as
profitable.

gcc/ChangeLog:

2021-01-15  Ilya Leoshkevich  <iii@linux.ibm.com>

* fwprop.c (fwprop_propagation::classify_result): Allow
(subreg (mem)) simplifications.
gcc/fwprop.c