summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1996-06-06 23:44:49 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1996-06-06 23:44:49 +0000
commit7fd6c6b9f28dff45357bc23c1d4ba8774f53031e (patch)
tree2a239b1d87ab59abe5efb1599d648fc5e9b12065 /gcc
parent0cb66a19ffe863edafe7cdfad19f9aa9231e449f (diff)
downloadppe42-gcc-7fd6c6b9f28dff45357bc23c1d4ba8774f53031e.tar.gz
ppe42-gcc-7fd6c6b9f28dff45357bc23c1d4ba8774f53031e.zip
(init_cumulative_args): Change EXPR_LIST to PARALLEL
in comments. (function_arg): Generate PARALLEL instead of EXPR_LIST. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@12198 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 7cb1e80123e..a476d1fcf51 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -1032,7 +1032,7 @@ small_data_operand (op, mode)
For a library call, FNTYPE is 0.
For incoming args we set the number of arguments in the prototype large
- so we never return an EXPR_LIST. */
+ so we never return a PARALLEL. */
void
init_cumulative_args (cum, fntype, libname, incoming)
@@ -1052,7 +1052,7 @@ init_cumulative_args (cum, fntype, libname, incoming)
if (incoming)
{
- cum->nargs_prototype = 1000; /* don't return an EXPR_LIST */
+ cum->nargs_prototype = 1000; /* don't return a PARALLEL */
if (abi == ABI_V4 || abi == ABI_SOLARIS)
cum->varargs_offset = RS6000_VARARGS_OFFSET;
}
@@ -1201,7 +1201,7 @@ function_arg_advance (cum, mode, type, named)
both an FP and integer register (or possibly FP reg and stack). Library
functions (when TYPE is zero) always have the proper types for args,
so we can pass the FP value just in one register. emit_library_function
- doesn't support EXPR_LIST anyway. */
+ doesn't support PARALLEL anyway. */
struct rtx_def *
function_arg (cum, mode, type, named)
@@ -1256,11 +1256,26 @@ function_arg (cum, mode, type, named)
|| !type)
return gen_rtx (REG, mode, cum->fregno);
- return gen_rtx (EXPR_LIST, VOIDmode,
- ((align_words < GP_ARG_NUM_REG)
- ? gen_rtx (REG, mode, GP_ARG_MIN_REG + align_words)
- : NULL_RTX),
- gen_rtx (REG, mode, cum->fregno));
+ return gen_rtx (PARALLEL, mode,
+ gen_rtvec
+ (2,
+ gen_rtx (EXPR_LIST, VOIDmode,
+ ((align_words >= GP_ARG_NUM_REG)
+ ? NULL_RTX
+ : (align_words
+ + RS6000_ARG_SIZE (mode, type, named)
+ > GP_ARG_NUM_REG
+ /* If this is partially on the stack, then
+ we only include the portion actually
+ in registers here. */
+ ? gen_rtx (REG, SImode,
+ GP_ARG_MIN_REG + align_words)
+ : gen_rtx (REG, mode,
+ GP_ARG_MIN_REG + align_words))),
+ const0_rtx),
+ gen_rtx (EXPR_LIST, VOIDmode,
+ gen_rtx (REG, mode, cum->fregno),
+ const0_rtx)));
}
/* Long longs won't be split between register and stack */
OpenPOWER on IntegriCloud