diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-08-21 07:52:12 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-08-21 07:52:12 -0400 |
commit | 4d6697ca225160f459ba1e0be1721d3e460a4b4e (patch) | |
tree | ac1eb9ec64d66e5fe17fdd0a6cea03b2aceca0e8 /gcc | |
parent | af708691c47e2e761482f7a856251fbc76608b98 (diff) | |
download | gcc-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.h | 7 |
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, \ |