diff options
author | Jeff Law <law@redhat.com> | 2010-03-03 15:10:17 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2010-03-03 15:10:17 -0700 |
commit | d8a60d2424392cce4e9ac6e4a9689e32c4ecaa5a (patch) | |
tree | 5892657c76a46f77697f12e5568e7d72f1c35088 /gcc/expmed.c | |
parent | 8ec49cffc2ab188190544d494b8bb7907732d17e (diff) | |
download | gcc-d8a60d2424392cce4e9ac6e4a9689e32c4ecaa5a.zip gcc-d8a60d2424392cce4e9ac6e4a9689e32c4ecaa5a.tar.gz gcc-d8a60d2424392cce4e9ac6e4a9689e32c4ecaa5a.tar.bz2 |
re PR middle-end/32693 ([H8] : ICE: in gen_rtx_SUBREG, at emit-rtl.c:693)
* PR middle-end/32693
* expmed.c (store_bit_field_1): Use gen_lowpart_SUBREG rather
than gen_rtx_SUBREG.
(extract_bit_field_1): Likewise.
From-SVN: r157207
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index ab42fd0..aa24099 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -698,7 +698,7 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, and we will need the original value of op0 if insv fails. */ xop0 = gen_rtx_SUBREG (op_mode, SUBREG_REG (xop0), SUBREG_BYTE (xop0)); if (REG_P (xop0) && GET_MODE (xop0) != op_mode) - xop0 = gen_rtx_SUBREG (op_mode, xop0, 0); + xop0 = gen_lowpart_SUBREG (op_mode, xop0); /* If the destination is a paradoxical subreg such that we need a truncate to the inner mode, perform the insertion on a temporary and @@ -1542,7 +1542,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, /* If op0 is a register, we need it in EXT_MODE to make it acceptable to the format of ext(z)v. */ if (REG_P (xop0) && GET_MODE (xop0) != ext_mode) - xop0 = gen_rtx_SUBREG (ext_mode, xop0, 0); + xop0 = gen_lowpart_SUBREG (ext_mode, xop0); if (MEM_P (xop0)) /* Get ref to first byte containing part of the field. */ xop0 = adjust_address (xop0, byte_mode, xoffset); |