aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2004-11-12 07:59:47 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-11-12 06:59:47 +0000
commitf58c00e3f13c47b48a85ad58a40374542098264c (patch)
treeb84d6a18ed5d205a123313fe0851a7999005e4d4
parent765d98c70c0b9533e0a9b0b0a310dcc488b0fb9d (diff)
downloadgcc-f58c00e3f13c47b48a85ad58a40374542098264c.zip
gcc-f58c00e3f13c47b48a85ad58a40374542098264c.tar.gz
gcc-f58c00e3f13c47b48a85ad58a40374542098264c.tar.bz2
expr.c (emit_group_load): Use extract_bit_field to load from the stack.
* expr.c (emit_group_load) <CONCAT>: Use extract_bit_field to load from the stack. From-SVN: r90521
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expr.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5a5d6d1..3696bd1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-12 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * expr.c (emit_group_load) <CONCAT>: Use extract_bit_field
+ to load from the stack.
+
2004-11-12 Richard Henderson <rth@redhat.com>
* toplev.c (floor_log2): Rename from floor_log2_wide, use CLZ_HWI.
diff --git a/gcc/expr.c b/gcc/expr.c
index 18d3ff6..6037fd1 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1673,11 +1673,12 @@ emit_group_load (rtx dst, rtx orig_src, tree type ATTRIBUTE_UNUSED, int ssize)
else
{
rtx mem;
-
+
gcc_assert (!bytepos);
mem = assign_stack_temp (GET_MODE (src), slen, 0);
emit_move_insn (mem, src);
- tmps[i] = adjust_address (mem, mode, 0);
+ tmps[i] = extract_bit_field (mem, bytelen * BITS_PER_UNIT,
+ 0, 1, NULL_RTX, mode, mode);
}
}
/* FIXME: A SIMD parallel will eventually lead to a subreg of a