summaryrefslogtreecommitdiff
path: root/gcc/config/sparc
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2005-10-17 23:26:29 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2005-10-17 23:26:29 +0000
commitd302efa9e6314c7af3d79da26ab397d0fe919810 (patch)
treeb5c11ff40ac03c1001fce5e8eb37feacb5474196 /gcc/config/sparc
parent5f959b7da319ae9245a76feb9749b7a6e222bb14 (diff)
downloadgcc-d302efa9e6314c7af3d79da26ab397d0fe919810.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105524 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/sparc')
-rw-r--r--gcc/config/sparc/sparc.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 180aaa514a8..0b18efd6f28 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)