ia64.c (ia64_function_arg): Use PARALLEL even if there is only one reg.
* config/ia64/ia64.c (ia64_function_arg): Use PARALLEL even if there is only one reg. (ia64_function_value): Ditto. From-SVN: r87038
This commit is contained in:
parent
467cecf3b8
commit
9dec91d433
2 changed files with 8 additions and 16 deletions
|
@ -1,3 +1,9 @@
|
|||
2004-09-03 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
* config/ia64/ia64.c (ia64_function_arg): Use PARALLEL even if there
|
||||
is only one reg.
|
||||
(ia64_function_value): Ditto.
|
||||
|
||||
2004-09-03 Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
PR c/7054
|
||||
|
|
|
@ -3169,17 +3169,7 @@ ia64_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
|
|||
else if (gr_size > UNITS_PER_WORD)
|
||||
int_regs += gr_size / UNITS_PER_WORD;
|
||||
}
|
||||
|
||||
/* If we ended up using just one location, just return that one loc, but
|
||||
change the mode back to the argument mode. However, we can't do this
|
||||
when hfa_mode is XFmode and mode is TImode. In that case, we would
|
||||
return a TImode reference to an FP reg, but FP regs can't hold TImode.
|
||||
We need the PARALLEL to make this work. This can happen for a union
|
||||
containing a single __float80 member. */
|
||||
if (i == 1 && ! (hfa_mode == XFmode && mode == TImode))
|
||||
return gen_rtx_REG (mode, REGNO (XEXP (loc[0], 0)));
|
||||
else
|
||||
return gen_rtx_PARALLEL (mode, gen_rtvec_v (i, loc));
|
||||
return gen_rtx_PARALLEL (mode, gen_rtvec_v (i, loc));
|
||||
}
|
||||
|
||||
/* Integral and aggregates go in general registers. If we have run out of
|
||||
|
@ -3477,11 +3467,7 @@ ia64_function_value (tree valtype, tree func ATTRIBUTE_UNUSED)
|
|||
GEN_INT (offset));
|
||||
offset += hfa_size;
|
||||
}
|
||||
|
||||
if (i == 1)
|
||||
return XEXP (loc[0], 0);
|
||||
else
|
||||
return gen_rtx_PARALLEL (mode, gen_rtvec_v (i, loc));
|
||||
return gen_rtx_PARALLEL (mode, gen_rtvec_v (i, loc));
|
||||
}
|
||||
else if (FLOAT_TYPE_P (valtype) && mode != TFmode && mode != TCmode)
|
||||
return gen_rtx_REG (mode, FR_ARG_FIRST);
|
||||
|
|
Loading…
Add table
Reference in a new issue