aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>1999-08-06 02:30:39 +0000
committerJim Wilson <wilson@gcc.gnu.org>1999-08-05 19:30:39 -0700
commit7c4a6db02372eada584693014aa9c4f4ab9d6d4e (patch)
tree52f5f0d8f590ea0ca4c6cb014b86be4ce68e1471 /gcc
parent9d29e7afe1d191b14c296cbcf72f53fdbaa46b95 (diff)
downloadgcc-7c4a6db02372eada584693014aa9c4f4ab9d6d4e.zip
gcc-7c4a6db02372eada584693014aa9c4f4ab9d6d4e.tar.gz
gcc-7c4a6db02372eada584693014aa9c4f4ab9d6d4e.tar.bz2
Allow PARALLEL return value for complex type represented as a CONCAT.
* expr.c (emit_group_load): Allow src to be a CONCAT. From-SVN: r28546
Diffstat (limited to 'gcc')
-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,