From d072107f2332b70700b7fbd9b27c802ff3cef1a2 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 29 May 1992 16:14:01 -0400 Subject: [PATCH] *** empty log message *** From-SVN: r1125 --- gcc/config/romp/romp.h | 5 +++-- gcc/config/rs6000/rs6000.h | 3 ++- gcc/explow.c | 14 ++++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gcc/config/romp/romp.h b/gcc/config/romp/romp.h index 0c06624092ba..6ec7eee23aed 100644 --- a/gcc/config/romp/romp.h +++ b/gcc/config/romp/romp.h @@ -638,8 +638,9 @@ struct rt_cargs {int gregs, fregs; }; #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ (! (NAMED) ? 0 \ - : USE_FP_REG(MODE,CUM) ? gen_rtx(REG, (MODE),(CUM.fregs) + 17) \ - : (CUM).gregs < 4 ? gen_rtx(REG, (MODE), 2 + (CUM).gregs) : 0) + : ((TYPE) != 0 && TREE_CODE (TYPE_CODE (TYPE)) != INTEGER_CST) \ + : USE_FP_REG(MODE,CUM) ? gen_rtx(REG, (MODE),(CUM.fregs) + 17) \ + : (CUM).gregs < 4 ? gen_rtx(REG, (MODE), 2 + (CUM).gregs) : 0) /* For an arg passed partly in registers and partly in memory, this is the number of registers used. diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 7cda5d2fb712..5ab7340c28d1 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -714,7 +714,8 @@ struct rs6000_args {int words, fregno, nargs_prototype; }; #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ (! (NAMED) ? 0 \ - : USE_FP_FOR_ARG_P (CUM, MODE, TYPE) \ + : ((TYPE) != 0 && TREE_CODE (TYPE_CODE (TYPE)) != INTEGER_CST) \ + : USE_FP_FOR_ARG_P (CUM, MODE, TYPE) \ ? ((CUM).nargs_prototype > 0 \ ? gen_rtx (REG, MODE, (CUM).fregno) \ : ((CUM).words < 8 \ diff --git a/gcc/explow.c b/gcc/explow.c index ecb6477c45aa..c0d69720d1a9 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -751,18 +751,21 @@ emit_stack_save (save_level, psave, after) abort (); } + if (sa != 0) + sa = validize_mem (sa); + if (after) { rtx seq; start_sequence (); - emit_insn (fcn (validize_mem (sa), stack_pointer_rtx)); + emit_insn (fcn (sa, stack_pointer_rtx)); seq = gen_sequence (); end_sequence (); emit_insn_after (seq, after); } else - emit_insn (fcn (validize_mem (sa), stack_pointer_rtx)); + emit_insn (fcn (sa, stack_pointer_rtx)); } /* Restore the stack pointer for the purpose in SAVE_LEVEL. SA is the save @@ -804,18 +807,21 @@ emit_stack_restore (save_level, sa, after) #endif } + if (sa != 0) + sa = validize_mem (sa); + if (after) { rtx seq; start_sequence (); - emit_insn (fcn (stack_pointer_rtx, validize_mem (sa))); + emit_insn (fcn (stack_pointer_rtx, sa)); seq = gen_sequence (); end_sequence (); emit_insn_after (seq, after); } else - emit_insn (fcn (stack_pointer_rtx, validize_mem (sa))); + emit_insn (fcn (stack_pointer_rtx, sa)); } /* Return an rtx representing the address of an area of memory dynamically -- 2.39.2