tree-inline.c (inlinable_function_p): Don't support inlining functions using varargs.

* tree-inline.c (inlinable_function_p): Don't support inlining
	functions using varargs.

Index: testsuite/ChangeLog
	* gcc.c-torture/compile/inline-1.c: New file.

From-SVN: r66269
This commit is contained in:
Geoffrey Keating 2003-04-29 23:32:44 +00:00 committed by Geoffrey Keating
parent 0384674ecf
commit b3d627e251
4 changed files with 35 additions and 0 deletions

View File

@ -23,6 +23,9 @@
2003-04-29 Geoffrey Keating <geoffk@apple.com> 2003-04-29 Geoffrey Keating <geoffk@apple.com>
* tree-inline.c (inlinable_function_p): Don't support inlining
functions using varargs.
* doc/invoke.texi (Overall Options): Mention -x objective-c-header. * doc/invoke.texi (Overall Options): Mention -x objective-c-header.
* dwarf2out.c (output_call_frame_info): No need to output EH * dwarf2out.c (output_call_frame_info): No need to output EH

View File

@ -1,3 +1,7 @@
2003-04-29 Geoffrey Keating <geoffk@apple.com>
* gcc.c-torture/compile/inline-1.c: New file.
2003-04-29 Mark Mitchell <mark@codesourcery.com> 2003-04-29 Mark Mitchell <mark@codesourcery.com>
PR c++/10551 PR c++/10551

View File

@ -0,0 +1,21 @@
typedef __builtin_va_list va_list;
extern void foo (va_list);
static void
build_message_string (const char *msg, ...)
{
va_list ap;
__builtin_va_start (ap, msg);
foo (ap);
__builtin_va_end (ap);
}
void
file_name_as_prefix (f)
const char *f;
{
build_message_string ("%s: ", f);
}

View File

@ -1008,6 +1008,13 @@ inlinable_function_p (fn, id, nolimit)
else if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) == NULL else if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) == NULL
&& find_alloca_call (DECL_SAVED_TREE (fn))) && find_alloca_call (DECL_SAVED_TREE (fn)))
; ;
/* Can't inline functions which use varargs. It's not theoretically
impossible, we just don't do it yet; at least one problem is that
expand_builtin_next_arg needs to handle the situation. */
else if (TYPE_ARG_TYPES (TREE_TYPE (fn)) != 0
&& (TREE_VALUE (tree_last (TYPE_ARG_TYPES (TREE_TYPE (fn))))
!= void_type_node))
;
/* All is well. We can inline this function. Traditionally, GCC /* All is well. We can inline this function. Traditionally, GCC
has refused to inline functions using alloca, or functions whose has refused to inline functions using alloca, or functions whose
values are returned in a PARALLEL, and a few other such obscure values are returned in a PARALLEL, and a few other such obscure