aboutsummaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 76f292c..2a14287 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -852,8 +852,16 @@ set_decl_incoming_rtl (tree t, rtx x)
}
if (GET_CODE (x) == PARALLEL)
{
- int i;
- for (i = 0; i < XVECLEN (x, 0); i++)
+ int i, start;
+
+ /* Check for a NULL entry, used to indicate that the parameter goes
+ both on the stack and in registers. */
+ if (XEXP (XVECEXP (x, 0, 0), 0))
+ start = 0;
+ else
+ start = 1;
+
+ for (i = start; i < XVECLEN (x, 0); i++)
{
rtx y = XVECEXP (x, 0, i);
if (REG_P (XEXP (y, 0)))