aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-08-21 07:52:12 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-08-21 07:52:12 -0400
commit4d6697ca225160f459ba1e0be1721d3e460a4b4e (patch)
treeac1eb9ec64d66e5fe17fdd0a6cea03b2aceca0e8 /gcc
parentaf708691c47e2e761482f7a856251fbc76608b98 (diff)
downloadgcc-4d6697ca225160f459ba1e0be1721d3e460a4b4e.zip
gcc-4d6697ca225160f459ba1e0be1721d3e460a4b4e.tar.gz
gcc-4d6697ca225160f459ba1e0be1721d3e460a4b4e.tar.bz2
(FUNCTION_ARG): Don't make an EXPR_LIST if making a libcall.
From-SVN: r1925
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index ebdf819..820ee4f 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -715,13 +715,16 @@ struct rs6000_args {int words, fregno, nargs_prototype; };
and the rest are pushed. The first 13 FP args are in registers.
If this is floating-point and no prototype is specified, we use
- both an FP and integer register (or possibly FP reg and stack). */
+ 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. */
#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
(! (NAMED) ? 0 \
: ((TYPE) != 0 && TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST) ? 0 \
: USE_FP_FOR_ARG_P (CUM, MODE, TYPE) \
- ? ((CUM).nargs_prototype > 0 \
+ ? ((CUM).nargs_prototype > 0 || (TYPE) == 0 \
? gen_rtx (REG, MODE, (CUM).fregno) \
: ((CUM).words < 8 \
? gen_rtx (EXPR_LIST, VOIDmode, \