From 3650b6953db819a6ba3c173fe3440d3e565b42eb Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sat, 11 Nov 2000 06:04:59 +0000 Subject: [PATCH] builtins.c (std_expand_builtin_va_start): Take PARM_BOUNDARY into account. * builtins.c (std_expand_builtin_va_start): Take PARM_BOUNDARY into account. From-SVN: r37381 --- gcc/ChangeLog | 3 +++ gcc/builtins.c | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b2e121efde..d1db1dc3bd6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2000-11-11 Alexandre Oliva + * builtins.c (std_expand_builtin_va_start): Take PARM_BOUNDARY + into account. + * config/sh/sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP modes. diff --git a/gcc/builtins.c b/gcc/builtins.c index 8430a23f82e..68a0e41a22f 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -2250,14 +2250,18 @@ stabilize_va_list (valist, needs_lvalue) the variable. */ void std_expand_builtin_va_start (stdarg_p, valist, nextarg) - int stdarg_p ATTRIBUTE_UNUSED; + int stdarg_p; tree valist; rtx nextarg; { tree t; - if (!stdarg_p) - nextarg = plus_constant (nextarg, -UNITS_PER_WORD); + if (! stdarg_p) + { + int align = PARM_BOUNDARY / BITS_PER_UNIT; + int offset = (((UNITS_PER_WORD + align - 1) / align) * align); + nextarg = plus_constant (nextarg, -offset); + } t = build (MODIFY_EXPR, TREE_TYPE (valist), valist, make_tree (ptr_type_node, nextarg)); -- 2.30.2