diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2011-07-21 10:13:27 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2011-07-21 10:13:27 +0000 |
commit | d6f2373894eeb4fdf52141d9c94bba7c5c884d43 (patch) | |
tree | e7be17936d279457d5bb7033fdb5627952fdd91d /gcc | |
parent | fec3cad34054045fd56274fe4620cf98a9da3d25 (diff) | |
download | gcc-d6f2373894eeb4fdf52141d9c94bba7c5c884d43.zip gcc-d6f2373894eeb4fdf52141d9c94bba7c5c884d43.tar.gz gcc-d6f2373894eeb4fdf52141d9c94bba7c5c884d43.tar.bz2 |
regcprop.c (maybe_mode_change): Check HARD_REGNO_MODE_OK.
gcc/
* regcprop.c (maybe_mode_change): Check HARD_REGNO_MODE_OK.
From-SVN: r176558
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/regcprop.c | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f35786..cf57537 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2011-07-21 Richard Sandiford <richard.sandiford@linaro.org> + + * regcprop.c (maybe_mode_change): Check HARD_REGNO_MODE_OK. + 2011-07-21 Kai Tietz <ktietz@redhat.com> * tree-ssa-propagate.c (substitute_and_fold): Use diff --git a/gcc/regcprop.c b/gcc/regcprop.c index 911f59eb..aca005d 100644 --- a/gcc/regcprop.c +++ b/gcc/regcprop.c @@ -418,10 +418,9 @@ maybe_mode_change (enum machine_mode orig_mode, enum machine_mode copy_mode, offset = ((WORDS_BIG_ENDIAN ? wordoffset : 0) + (BYTES_BIG_ENDIAN ? byteoffset : 0)); - return gen_rtx_raw_REG (new_mode, - regno + subreg_regno_offset (regno, orig_mode, - offset, - new_mode)); + regno += subreg_regno_offset (regno, orig_mode, offset, new_mode); + if (HARD_REGNO_MODE_OK (regno, new_mode)) + return gen_rtx_raw_REG (new_mode, regno); } return NULL_RTX; } |