aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2005-01-20 17:36:02 +0000
committerAldy Hernandez <aldyh@redhat.com>2005-01-20 17:36:02 +0000
commit711fefd61bc7b0f610e7b9fe4fcc0be5d991e60d (patch)
treefab1f8f98b8670fcafba8c310e79dd5665c50c7e
parentdc8eb481d64d2820e4c7872733fe5d1e67a82f0d (diff)
Backport from mainline.
* expmed.c (store_bit_field): Use simplify_gen_subreg instead of gen_rtx_SUBREG directly. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-3_4-e500-branch@93968 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog.e5007
-rw-r--r--gcc/expmed.c19
2 files changed, 11 insertions, 15 deletions
diff --git a/gcc/ChangeLog.e500 b/gcc/ChangeLog.e500
index 1f4ebccfdff..a38feefccce 100644
--- a/gcc/ChangeLog.e500
+++ b/gcc/ChangeLog.e500
@@ -1,3 +1,10 @@
+2005-01-21 Aldy Hernandez <aldyh@redhat.com>
+
+ Backport from mainline.
+
+ * expmed.c (store_bit_field): Use simplify_gen_subreg instead
+ of gen_rtx_SUBREG directly.
+
2005-01-20 Aldy Hernandez <aldyh@redhat.com>
Backport from mainline.
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 88db488feef..531a19c6fcb 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -391,22 +391,11 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
{
if (GET_MODE (op0) != fieldmode)
{
- if (GET_CODE (op0) == SUBREG)
- {
- if (GET_MODE (SUBREG_REG (op0)) == fieldmode
- || GET_MODE_CLASS (fieldmode) == MODE_INT
- || GET_MODE_CLASS (fieldmode) == MODE_PARTIAL_INT)
- op0 = SUBREG_REG (op0);
- else
- /* Else we've got some float mode source being extracted into
- a different float mode destination -- this combination of
- subregs results in Severe Tire Damage. */
- abort ();
- }
- if (GET_CODE (op0) == REG)
- op0 = gen_rtx_SUBREG (fieldmode, op0, byte_offset);
+ if (GET_CODE (op0) == MEM)
+ op0 = adjust_address (op0, fieldmode, offset);
else
- op0 = adjust_address (op0, fieldmode, offset);
+ op0 = simplify_gen_subreg (fieldmode, op0, GET_MODE (op0),
+ byte_offset);
}
emit_move_insn (op0, value);
return value;