[lto] c-aux-info.c: Remove deserves_ellipsis.

Kazu Hirata kazu@codesourcery.com
Sat Jun 10 17:17:00 GMT 2006


Hi,

Attached is a patch to remove deserves_ellipsis.

I recently introduced stdarg_p in tree.c, which returns whether a
given function type was declared with an ellipsis.

It turns out that deserves_ellipsis in c-aux-info.c does the same
thing except that it looks for void_type_node in the middle of the
type list.

Since get_parm_info guarantees that void_type_node can only appear at
the end of the type list, and deserves_ellipsis is called after a
function declaration is completed, we can safely replace
deserves_ellipsis with stdarg_p.

Tested on x86_64-pc-linux-gnu.  OK to apply to the LTO branch?

Kazu Hirata

2006-06-10  Kazu Hirata  <kazu@codesourcery.com>

	* c-aux-info.c (deserves_ellipsis): Remove.
	(gen_formal_list_for_func_def): Call stdarg_p instead of
	deserves_ellipsis.

Index: c-aux-info.c
===================================================================
--- c-aux-info.c	(revision 114528)
+++ c-aux-info.c	(working copy)
@@ -43,7 +43,6 @@ static const char *data_type;
 
 static char *affix_data_type (const char *) ATTRIBUTE_MALLOC;
 static const char *gen_formal_list_for_type (tree, formals_style);
-static int   deserves_ellipsis (tree);
 static const char *gen_formal_list_for_func_def (tree, formals_style);
 static const char *gen_type (const char *, tree, formals_style);
 static const char *gen_decl (tree, int, formals_style);
@@ -184,28 +183,6 @@ gen_formal_list_for_type (tree fntype, f
   return concat (" (", formal_list, ")", NULL);
 }
 
-/* For the generation of an ANSI prototype for a function definition, we have
-   to look at the formal parameter list of the function's own "type" to
-   determine if the function's formal parameter list should end with an
-   ellipsis.  Given a tree node, the following function will return nonzero
-   if the "function type" parameter list should end with an ellipsis.  */
-
-static int
-deserves_ellipsis (tree fntype)
-{
-  tree formal_type;
-
-  formal_type = TYPE_ARG_TYPES (fntype);
-  while (formal_type && TREE_VALUE (formal_type) != void_type_node)
-    formal_type = TREE_CHAIN (formal_type);
-
-  /* If there were at least some parameters, and if the formals-types-list
-     petered out to a NULL (i.e. without being terminated by a void_type_node)
-     then we need to tack on an ellipsis.  */
-
-  return (!formal_type && TYPE_ARG_TYPES (fntype));
-}
-
 /* Generate a parameter list for a function definition (in some given style).
 
    Note that this routine has to be separate (and different) from the code that
@@ -249,7 +226,7 @@ gen_formal_list_for_func_def (tree fndec
     {
       if (!DECL_ARGUMENTS (fndecl))
 	formal_list = concat (formal_list, "void", NULL);
-      if (deserves_ellipsis (TREE_TYPE (fndecl)))
+      if (stdarg_p (TREE_TYPE (fndecl)))
 	formal_list = concat (formal_list, ", ...", NULL);
     }
   if ((style == ansi) || (style == k_and_r_names))



More information about the Gcc-patches mailing list