aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2005-10-18 01:26:29 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2005-10-17 23:26:29 +0000
commit7617ec024b9a8a3c15d4927c71c9ca6045200e19 (patch)
treeb5c11ff40ac03c1001fce5e8eb37feacb5474196 /gcc
parent0ef8776d01a50a33031e4bbc3ee03349bf7de862 (diff)
downloadgcc-7617ec024b9a8a3c15d4927c71c9ca6045200e19.zip
gcc-7617ec024b9a8a3c15d4927c71c9ca6045200e19.tar.gz
gcc-7617ec024b9a8a3c15d4927c71c9ca6045200e19.tar.bz2
sparc.c (function_arg_slotno): In 64-bit mode...
* config/sparc/sparc.c (function_arg_slotno): In 64-bit mode, align the slot on an even boundary for any type with 16-byte alignment. From-SVN: r105524
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.c9
2 files changed, 6 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ef2f059..c606f83 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-17 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (function_arg_slotno): In 64-bit mode, align
+ the slot on an even boundary for any type with 16-byte alignment.
+
2005-10-17 Hans-Peter Nilsson <hp@axis.com>
PR target/23424
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 180aaa5..0b18efd 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -4443,7 +4443,7 @@ function_arg_slotno (const struct sparc_args *cum, enum machine_mode mode,
/* For SPARC64, objects requiring 16-byte alignment get it. */
if (TARGET_ARCH64
- && GET_MODE_ALIGNMENT (mode) >= 2 * BITS_PER_WORD
+ && (type ? TYPE_ALIGN (type) : GET_MODE_ALIGNMENT (mode)) >= 128
&& (slotno & 1) != 0)
slotno++, *ppadding = 1;
@@ -4503,13 +4503,6 @@ function_arg_slotno (const struct sparc_args *cum, enum machine_mode mode,
gcc_assert (mode == BLKmode);
- /* For SPARC64, objects requiring 16-byte alignment get it. */
- if (TARGET_ARCH64
- && type
- && TYPE_ALIGN (type) >= 2 * BITS_PER_WORD
- && (slotno & 1) != 0)
- slotno++, *ppadding = 1;
-
if (TARGET_ARCH32 || !type || (TREE_CODE (type) == UNION_TYPE))
{
if (slotno >= SPARC_INT_ARG_MAX)