aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1994-12-12 18:14:40 +0000
committerDoug Evans <dje@gnu.org>1994-12-12 18:14:40 +0000
commitea5917da8d3794e8eb162ed1c6d6bb5a76ba2607 (patch)
tree93536d960ec28ea176b846b7ba82ad2d15ffbb9b /gcc/function.c
parent37c9f67474a1361512677f00ccf51de259334171 (diff)
downloadgcc-ea5917da8d3794e8eb162ed1c6d6bb5a76ba2607.zip
gcc-ea5917da8d3794e8eb162ed1c6d6bb5a76ba2607.tar.gz
gcc-ea5917da8d3794e8eb162ed1c6d6bb5a76ba2607.tar.bz2
(locate_and_pad_parm): Don't call pad_below for BLKmode parms in regs.
From-SVN: r8645
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 7e50c84..ba1265b 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -4017,7 +4017,10 @@ locate_and_pad_parm (passed_mode, type, in_regs, fndecl,
/* Pad_below needs the pre-rounded size to know how much to pad below
so this must be done before rounding up. */
- if (where_pad == downward)
+ if (where_pad == downward
+ /* However, BLKmode args passed in regs have their padding done elsewhere.
+ The stack slot must be able to hold the entire register. */
+ && !(in_regs && passed_mode == BLKmode))
pad_below (offset_ptr, passed_mode, sizetree);
if (where_pad != none