aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-01-05 07:38:47 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-01-05 07:38:47 +0000
commit97fc4caf7d18cd4aaa2a31a55c68b4a4ec7deb36 (patch)
treefc67cb4461acbc1d54a42438d9eee1c7e9e9a151 /gcc
parentffc5c6a98441d8e1abe6cdc0d2a93591e21191d7 (diff)
downloadgcc-97fc4caf7d18cd4aaa2a31a55c68b4a4ec7deb36.zip
gcc-97fc4caf7d18cd4aaa2a31a55c68b4a4ec7deb36.tar.gz
gcc-97fc4caf7d18cd4aaa2a31a55c68b4a4ec7deb36.tar.bz2
calls.c (emit_library_call_value_1): Support INIT_CUMULATIVE_LIBCALL_ARGS.
* calls.c (emit_library_call_value_1): Support INIT_CUMULATIVE_LIBCALL_ARGS. * tm.texi (INIT_CUMULATIVE_LIBCALL_ARGS): Document it. From-SVN: r38706
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/calls.c6
-rw-r--r--gcc/tm.texi8
3 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9f5680f..77a7f79b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2001-01-05 Alexandre Oliva <aoliva@redhat.com>
+
+ * calls.c (emit_library_call_value_1): Support
+ INIT_CUMULATIVE_LIBCALL_ARGS.
+ * tm.texi (INIT_CUMULATIVE_LIBCALL_ARGS): Document it.
+
2001-01-04 Richard Henderson <rth@redhat.com>
* c-decl.c (finish_struct): Detect flexible array members
diff --git a/gcc/calls.c b/gcc/calls.c
index 95ff8b1..ab6c5bb 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1,6 +1,6 @@
/* Convert function calls to rtl insns, for GNU C compiler.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998
- 1999, 2000 Free Software Foundation, Inc.
+ 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -3589,7 +3589,11 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
argvec = (struct arg *) alloca ((nargs + 1) * sizeof (struct arg));
memset ((char *) argvec, 0, (nargs + 1) * sizeof (struct arg));
+#ifdef INIT_CUMULATIVE_LIBCALL_ARGS
+ INIT_CUMULATIVE_LIBCALL_ARGS (args_so_far, outmode, fun);
+#else
INIT_CUMULATIVE_ARGS (args_so_far, NULL_TREE, fun, 0);
+#endif
args_size.constant = 0;
args_size.var = 0;
diff --git a/gcc/tm.texi b/gcc/tm.texi
index 59b03ea..795abac 100644
--- a/gcc/tm.texi
+++ b/gcc/tm.texi
@@ -3045,6 +3045,14 @@ an ordinary C function call is being processed. Thus, each time this
macro is called, either @var{libname} or @var{fntype} is nonzero, but
never both of them at once.
+@findex INIT_CUMULATIVE_LIBCALL_ARGS
+@item INIT_CUMULATIVE_LIBCALL_ARGS (@var{cum}, @var{mode}, @var{libname})
+Like @code{INIT_CUMULATIVE_ARGS} but only used for outgoing libcalls,
+it gets a @code{MODE} argument instead of @var{fntype}, that would be
+@code{NULL}. @var{indirect} would always be zero, too. If this macro
+is not defined, @code{INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname,
+0)} is used instead.
+
@findex INIT_CUMULATIVE_INCOMING_ARGS
@item INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname})
Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of