aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2010-03-03 15:10:17 -0700
committerJeff Law <law@gcc.gnu.org>2010-03-03 15:10:17 -0700
commitd8a60d2424392cce4e9ac6e4a9689e32c4ecaa5a (patch)
tree5892657c76a46f77697f12e5568e7d72f1c35088 /gcc/expmed.c
parent8ec49cffc2ab188190544d494b8bb7907732d17e (diff)
downloadgcc-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.c4
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);