aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2004-02-02 13:20:52 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-02-02 12:20:52 +0000
commitd560b0aa2ab4f07365674f3a7d2e4a4626c363c5 (patch)
tree762a44f8ce2364a2c1a05d1beb19c3b6dfa48f3a /gcc/config
parent6f626d1bdf012ca311c77ec48194d1add0e5e052 (diff)
downloadgcc-d560b0aa2ab4f07365674f3a7d2e4a4626c363c5.zip
gcc-d560b0aa2ab4f07365674f3a7d2e4a4626c363c5.tar.gz
gcc-d560b0aa2ab4f07365674f3a7d2e4a4626c363c5.tar.bz2
sparc.c (function_arg_slotno): Align TImode arguments on a 16-byte boundary in the parameter array if ARCH64.
* config/sparc/sparc.c (function_arg_slotno): Align TImode arguments on a 16-byte boundary in the parameter array if ARCH64. Split handling of TFmode. From-SVN: r77107
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/sparc/sparc.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 369f11a..e7dd4fa 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -4979,19 +4979,27 @@ function_arg_slotno (const struct sparc_args *cum, enum machine_mode mode,
See emit_call_1. */
return -1;
+ case TImode : case CTImode :
+ if (TARGET_ARCH64 && (slotno & 1) != 0)
+ slotno++, *ppadding = 1;
+ /* fallthrough */
+
case QImode : case CQImode :
case HImode : case CHImode :
case SImode : case CSImode :
case DImode : case CDImode :
- case TImode : case CTImode :
if (slotno >= SPARC_INT_ARG_MAX)
return -1;
regno = regbase + slotno;
break;
+ case TFmode : case TCmode :
+ if (TARGET_ARCH64 && (slotno & 1) != 0)
+ slotno++, *ppadding = 1;
+ /* fallthrough */
+
case SFmode : case SCmode :
case DFmode : case DCmode :
- case TFmode : case TCmode :
if (TARGET_ARCH32)
{
if (slotno >= SPARC_INT_ARG_MAX)
@@ -5000,9 +5008,6 @@ function_arg_slotno (const struct sparc_args *cum, enum machine_mode mode,
}
else
{
- if ((mode == TFmode || mode == TCmode)
- && (slotno & 1) != 0)
- slotno++, *ppadding = 1;
if (TARGET_FPU && named)
{
if (slotno >= SPARC_FP_ARG_MAX)