aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/expr.c11
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 58ecbdf..4ef10b1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Thu Aug 5 19:29:39 1999 Jim Wilson <wilson@cygnus.com>
+
+ * expr.c (emit_group_load): Allow src to be a CONCAT.
+
Thu Aug 5 22:27:15 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* config/sh/lib1funcs.asm (___movstrSI0): Change or r0,r0,r0 to nop.
diff --git a/gcc/expr.c b/gcc/expr.c
index a76ee1a..6cbd699 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1967,6 +1967,17 @@ emit_group_load (dst, orig_src, ssize, align)
plus_constant (XEXP (src, 0),
bytepos)));
}
+ else if (GET_CODE (src) == CONCAT)
+ {
+ if (bytepos == 0
+ && bytelen == GET_MODE_SIZE (GET_MODE (XEXP (src, 0))))
+ tmps[i] = XEXP (src, 0);
+ else if (bytepos == GET_MODE_SIZE (GET_MODE (XEXP (src, 0)))
+ && bytelen == GET_MODE_SIZE (GET_MODE (XEXP (src, 1))))
+ tmps[i] = XEXP (src, 1);
+ else
+ abort ();
+ }
else
{
tmps[i] = extract_bit_field (src, bytelen*BITS_PER_UNIT,