Prevent invalid register mode changes in combine
authorRichard Sandiford <richard.sandiford@linaro.org>
Fri, 13 Oct 2017 09:58:23 +0000 (09:58 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 13 Oct 2017 09:58:23 +0000 (09:58 +0000)
commit8649149a3cdf939cf5d74da35eae6eb4802f9cd8
tree00cfb30f3cf9eb032dc83d729b0f9afda961e1c7
parent250a60f3879d2d508d0d08e9da1dfa1648e1a369
Prevent invalid register mode changes in combine

This patch stops combine from changing the mode of an existing register
in-place if doing so would change the size of the underlying register
allocation size, as given by REGMODE_NATURAL_SIZE.  Without this,
many tests fail in adjust_reg_mode after SVE is added.  One example
is gcc.c-torture/compile/20090401-1.c.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* combine.c (can_change_dest_mode): Reject changes in
REGMODE_NATURAL_SIZE.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r253717
gcc/ChangeLog
gcc/combine.c