combine: Another hard register problem (PR85805)
authorSegher Boessenkool <segher@gcc.gnu.org>
Thu, 26 Jul 2018 10:16:48 +0000 (12:16 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 26 Jul 2018 10:16:48 +0000 (12:16 +0200)
commit328aa7876732da9bbf851f7b9309b1f6fda1cd9d
treec7dcf974de0227370ede0f4f56a783a580a95da1
parent977667e6b74a56db3747caaed8ba776f6cae8cdf
combine: Another hard register problem (PR85805)

The current code in reg_nonzero_bits_for_combine allows using the
reg_stat info when last_set_mode is a different integer mode.  This is
completely wrong for non-pseudos.  For example, as in the PR, a value
in a DImode hard register is set by eight writes to its constituent
QImode parts.  The value written to the DImode is not the same as that
written to the lowest-numbered QImode!

PR rtl-optimization/85805
* combine.c (reg_nonzero_bits_for_combine): Only use the last set
value for hard registers if that was written in the same mode.

From-SVN: r262994
gcc/ChangeLog
gcc/combine.c