summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-13 13:04:34 +0000
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-13 13:04:34 +0000
commitc87fa2c997a1775df20ae004f7fdd51b7c4ea04c (patch)
treea36f45b1865416e4e4e71bfe03ca5a5f790339d9
parent7a986f179d24748f29c99d9cc39d2b06c64d91b5 (diff)
downloadppe42-gcc-c87fa2c997a1775df20ae004f7fdd51b7c4ea04c.tar.gz
ppe42-gcc-c87fa2c997a1775df20ae004f7fdd51b7c4ea04c.zip
* config/s390/s390.c (s390_va_arg): Fix alignment when retrieving
non-integral types from integer register save area slots. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67894 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.c9
2 files changed, 7 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 86a03b85782..0c120196879 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-13 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (s390_va_arg): Fix alignment when retrieving
+ non-integral types from integer register save area slots.
+
2003-06-13 Nathanael Nerode <neroden@gcc.gnu.org>
* config/i386/svr3dbx.h: GNU CC -> GCC; Intel 385 -> Intel 386.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 6b42699bc20..9ca394f8dd6 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -6073,13 +6073,8 @@ s390_va_arg (valist, type)
reg = gpr;
n_reg = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
sav_ofs = 2 * UNITS_PER_WORD;
- if (TARGET_64BIT)
- sav_ofs += TYPE_MODE (type) == SImode ? 4 :
- TYPE_MODE (type) == HImode ? 6 :
- TYPE_MODE (type) == QImode ? 7 : 0;
- else
- sav_ofs += TYPE_MODE (type) == HImode ? 2 :
- TYPE_MODE (type) == QImode ? 3 : 0;
+ if (size < UNITS_PER_WORD)
+ sav_ofs += UNITS_PER_WORD - size;
sav_scale = UNITS_PER_WORD;
if (n_reg > 1)
OpenPOWER on IntegriCloud