[PATCH] remove some old code from ansidecl.h

Tom Tromey tromey@redhat.com
Mon Jan 13 14:28:00 GMT 2014


ansidecl.h still defines a number of macros which I think are now
obsolete.  I recently removed all uses of these macros from
binutils-gdb.git; and there are no more uses in gcc.  So, I'd like to
propose removing the old macros entirely.

This patch removes the last uses of PARAMS from include, and the last
uses of the obsolete VA_* wrapper macros from libiberty.  Then, it
removes many obsolete macro definitions from ansidecl.h.

I tested this by rebuilding gcc and binutils-gdb with the patch.

Note that even if I missed a use of one of the macros, the
consequences are small, as the fix is always trivial.

2014-01-13  Tom Tromey  <tromey@redhat.com>

	* ansidecl.h (ANSI_PROTOTYPES, PTRCONST, LONG_DOUBLE, PARAMS)
	(VPARAMS, VA_START, VA_OPEN, VA_CLOSE, VA_FIXEDARG, CONST)
	(VOLATILE, SIGNED, PROTO, EXFUN, DEFUN, DEFUN_VOID, AND, DOTS)
	(NOARGS): Don't define.
	* libiberty.h (expandargv, writeargv): Don't use PARAMS.

2014-01-13  Tom Tromey  <tromey@redhat.com>

	* _doprint.c (checkit): Use stdarg, not VA_* macros.
	* asprintf.c (asprintf): Use stdarg, not VA_* macros.
	* concat.c (concat_length, concat_copy, concat_copy2, concat)
	(reconcat): Use stdarg, not VA_* macros.
	* snprintf.c (snprintf): Use stdarg, not VA_* macros.
	* vasprintf.c (checkit): Use stdarg, not VA_* macros.
	* vsnprintf.c (checkit): Use stdarg, not VA_* macros.
---
 include/ChangeLog     |   8 +++
 include/ansidecl.h    | 141 +-------------------------------------------------
 include/libiberty.h   |   6 +--
 libiberty/ChangeLog   |  10 ++++
 libiberty/_doprnt.c   |   6 +--
 libiberty/asprintf.c  |   9 ++--
 libiberty/concat.c    |  45 +++++++---------
 libiberty/snprintf.c  |  10 ++--
 libiberty/vasprintf.c |   8 +--
 libiberty/vsnprintf.c |  10 ++--
 10 files changed, 62 insertions(+), 191 deletions(-)

diff --git a/include/ansidecl.h b/include/ansidecl.h
index 5cd03a7..0fb23bb 100644
--- a/include/ansidecl.h
+++ b/include/ansidecl.h
@@ -1,6 +1,6 @@
 /* ANSI and traditional C compatability macros
    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-   2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+   2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2013
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -24,93 +24,16 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
 
    Macro		ANSI C definition	Traditional C definition
    -----		---- - ----------	----------- - ----------
-   ANSI_PROTOTYPES	1			not defined
    PTR			`void *'		`char *'
-   PTRCONST		`void *const'		`char *'
-   LONG_DOUBLE		`long double'		`double'
    const		not defined		`'
    volatile		not defined		`'
    signed		not defined		`'
-   VA_START(ap, var)	va_start(ap, var)	va_start(ap)
-
-   Note that it is safe to write "void foo();" indicating a function
-   with no return value, in all K+R compilers we have been able to test.
-
-   For declaring functions with prototypes, we also provide these:
-
-   PARAMS ((prototype))
-   -- for functions which take a fixed number of arguments.  Use this
-   when declaring the function.  When defining the function, write a
-   K+R style argument list.  For example:
-
-	char *strcpy PARAMS ((char *dest, char *source));
-	...
-	char *
-	strcpy (dest, source)
-	     char *dest;
-	     char *source;
-	{ ... }
-
-
-   VPARAMS ((prototype, ...))
-   -- for functions which take a variable number of arguments.  Use
-   PARAMS to declare the function, VPARAMS to define it.  For example:
-
-	int printf PARAMS ((const char *format, ...));
-	...
-	int
-	printf VPARAMS ((const char *format, ...))
-	{
-	   ...
-	}
-
-   For writing functions which take variable numbers of arguments, we
-   also provide the VA_OPEN, VA_CLOSE, and VA_FIXEDARG macros.  These
-   hide the differences between K+R <varargs.h> and C89 <stdarg.h> more
-   thoroughly than the simple VA_START() macro mentioned above.
-
-   VA_OPEN and VA_CLOSE are used *instead of* va_start and va_end.
-   Immediately after VA_OPEN, put a sequence of VA_FIXEDARG calls
-   corresponding to the list of fixed arguments.  Then use va_arg
-   normally to get the variable arguments, or pass your va_list object
-   around.  You do not declare the va_list yourself; VA_OPEN does it
-   for you.
-
-   Here is a complete example:
-
-	int
-	printf VPARAMS ((const char *format, ...))
-	{
-	   int result;
-
-	   VA_OPEN (ap, format);
-	   VA_FIXEDARG (ap, const char *, format);
-
-	   result = vfprintf (stdout, format, ap);
-	   VA_CLOSE (ap);
-
-	   return result;
-	}
-
-
-   You can declare variables either before or after the VA_OPEN,
-   VA_FIXEDARG sequence.  Also, VA_OPEN and VA_CLOSE are the beginning
-   and end of a block.  They must appear at the same nesting level,
-   and any variables declared after VA_OPEN go out of scope at
-   VA_CLOSE.  Unfortunately, with a K+R compiler, that includes the
-   argument list.  You can have multiple instances of VA_OPEN/VA_CLOSE
-   pairs in a single function in case you need to traverse the
-   argument list more than once.
 
    For ease of writing code which uses GCC extensions but needs to be
    portable to other compilers, we provide the GCC_VERSION macro that
    simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various
    wrappers around __attribute__.  Also, __extension__ will be #defined
-   to nothing if it doesn't work.  See below.
-
-   This header also defines a lot of obsolete macros:
-   CONST, VOLATILE, SIGNED, PROTO, EXFUN, DEFUN, DEFUN_VOID,
-   AND, DOTS, NOARGS.  Don't use them.  */
+   to nothing if it doesn't work.  See below.  */
 
 #ifndef	_ANSIDECL_H
 #define _ANSIDECL_H	1
@@ -149,28 +72,8 @@ So instead we use the macro below and test it against specific values.  */
    C++ compilers, does not define __STDC__, though it acts as if this
    was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */
 
-#define ANSI_PROTOTYPES	1
 #define PTR		void *
-#define PTRCONST	void *const
-#define LONG_DOUBLE	long double
 
-/* PARAMS is often defined elsewhere (e.g. by libintl.h), so wrap it in
-   a #ifndef.  */
-#ifndef PARAMS
-#define PARAMS(ARGS)		ARGS
-#endif
-
-#define VPARAMS(ARGS)		ARGS
-#define VA_START(VA_LIST, VAR)	va_start(VA_LIST, VAR)
-
-/* variadic function helper macros */
-/* "struct Qdmy" swallows the semicolon after VA_OPEN/VA_FIXEDARG's
-   use without inhibiting further decls and without declaring an
-   actual variable.  */
-#define VA_OPEN(AP, VAR)	{ va_list AP; va_start(AP, VAR); { struct Qdmy
-#define VA_CLOSE(AP)		} va_end(AP); }
-#define VA_FIXEDARG(AP, T, N)	struct Qdmy
- 
 #undef const
 #undef volatile
 #undef signed
@@ -188,35 +91,9 @@ So instead we use the macro below and test it against specific values.  */
 # endif
 #endif
 
-/* These are obsolete.  Do not use.  */
-#ifndef IN_GCC
-#define CONST		const
-#define VOLATILE	volatile
-#define SIGNED		signed
-
-#define PROTO(type, name, arglist)	type name arglist
-#define EXFUN(name, proto)		name proto
-#define DEFUN(name, arglist, args)	name(args)
-#define DEFUN_VOID(name)		name(void)
-#define AND		,
-#define DOTS		, ...
-#define NOARGS		void
-#endif /* ! IN_GCC */
-
 #else	/* Not ANSI C.  */
 
-#undef  ANSI_PROTOTYPES
 #define PTR		char *
-#define PTRCONST	PTR
-#define LONG_DOUBLE	double
-
-#define PARAMS(args)		()
-#define VPARAMS(args)		(va_alist) va_dcl
-#define VA_START(va_list, var)	va_start(va_list)
-
-#define VA_OPEN(AP, VAR)		{ va_list AP; va_start(AP); { struct Qdmy
-#define VA_CLOSE(AP)			} va_end(AP); }
-#define VA_FIXEDARG(AP, TYPE, NAME)	TYPE NAME = va_arg(AP, TYPE)
 
 /* some systems define these in header files for non-ansi mode */
 #undef const
@@ -228,20 +105,6 @@ So instead we use the macro below and test it against specific values.  */
 #define signed
 #define inline
 
-#ifndef IN_GCC
-#define CONST
-#define VOLATILE
-#define SIGNED
-
-#define PROTO(type, name, arglist)	type name ()
-#define EXFUN(name, proto)		name()
-#define DEFUN(name, arglist, args)	name arglist args;
-#define DEFUN_VOID(name)		name()
-#define AND		;
-#define DOTS
-#define NOARGS
-#endif /* ! IN_GCC */
-
 #endif	/* ANSI C.  */
 
 /* Define macros for some gcc attributes.  This permits us to use the
diff --git a/include/libiberty.h b/include/libiberty.h
index f2cf573..78c42eb 100644
--- a/include/libiberty.h
+++ b/include/libiberty.h
@@ -1,7 +1,7 @@
 /* Function declarations for libiberty.
 
    Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-   2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+   2006, 2007, 2008, 2009, 2010, 2011, 2013 Free Software Foundation, Inc.
    
    Note - certain prototypes declared in this header file are for
    functions whoes implementation copyright does not belong to the
@@ -85,11 +85,11 @@ extern char **dupargv (char **) ATTRIBUTE_MALLOC;
 
 /* Expand "@file" arguments in argv.  */
 
-extern void expandargv PARAMS ((int *, char ***));
+extern void expandargv (int *, char ***);
 
 /* Write argv to an @-file, inserting necessary quoting.  */
 
-extern int writeargv PARAMS ((char **, FILE *));
+extern int writeargv (char **, FILE *);
 
 /* Return the number of elements in argv.  */
 
diff --git a/libiberty/_doprnt.c b/libiberty/_doprnt.c
index ca97bc8..9723f32 100644
--- a/libiberty/_doprnt.c
+++ b/libiberty/_doprnt.c
@@ -222,11 +222,11 @@ static int
 checkit (const char* format, ...)
 {
   int result;
-  VA_OPEN (args, format);
-  VA_FIXEDARG (args, char *, format);
+  va_list args;
+  va_start (args, format);
 
   result = _doprnt (format, args, stdout);
-  VA_CLOSE (args);
+  va_end (args);
 
   return result;
 }
diff --git a/libiberty/asprintf.c b/libiberty/asprintf.c
index 3cf5052..961ad4d 100644
--- a/libiberty/asprintf.c
+++ b/libiberty/asprintf.c
@@ -1,6 +1,6 @@
 /* Like sprintf but provides a pointer to malloc'd storage, which must
    be freed by the caller.
-   Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2003, 2013 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions.
 
 This file is part of the libiberty library.
@@ -47,10 +47,9 @@ int
 asprintf (char **buf, const char *fmt, ...)
 {
   int status;
-  VA_OPEN (ap, fmt);
-  VA_FIXEDARG (ap, char **, buf);
-  VA_FIXEDARG (ap, const char *, fmt);
+  va_list ap;
+  va_start (ap, fmt);
   status = vasprintf (buf, fmt, ap);
-  VA_CLOSE (ap);
+  va_end (ap);
   return status;
 }
diff --git a/libiberty/concat.c b/libiberty/concat.c
index 4144d83..7846a19 100644
--- a/libiberty/concat.c
+++ b/libiberty/concat.c
@@ -1,5 +1,5 @@
 /* Concatenate variable number of strings.
-   Copyright (C) 1991, 1994, 2001, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1994, 2001, 2011, 2013 Free Software Foundation, Inc.
    Written by Fred Fish @ Cygnus Support
 
 This file is part of the libiberty library.
@@ -90,11 +90,11 @@ unsigned long
 concat_length (const char *first, ...)
 {
   unsigned long length;
+  va_list args;
 
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   length = vconcat_length (first, args);
-  VA_CLOSE (args);
+  va_end (args);
 
   return length;
 }
@@ -105,13 +105,12 @@ char *
 concat_copy (char *dst, const char *first, ...)
 {
   char *save_dst;
+  va_list args;
 
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, char *, dst);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   vconcat_copy (dst, first, args);
   save_dst = dst; /* With K&R C, dst goes out of scope here.  */
-  VA_CLOSE (args);
+  va_end (args);
 
   return save_dst;
 }
@@ -129,10 +128,10 @@ char *libiberty_concat_ptr;
 char *
 concat_copy2 (const char *first, ...)
 {
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
+  va_list args;
+  va_start (args, first);
   vconcat_copy (libiberty_concat_ptr, first, args);
-  VA_CLOSE (args);
+  va_end (args);
 
   return libiberty_concat_ptr;
 }
@@ -141,18 +140,17 @@ char *
 concat (const char *first, ...)
 {
   char *newstr;
+  va_list args;
 
   /* First compute the size of the result and get sufficient memory.  */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   newstr = XNEWVEC (char, vconcat_length (first, args) + 1);
-  VA_CLOSE (args);
+  va_end (args);
 
   /* Now copy the individual pieces to the result string. */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   vconcat_copy (newstr, first, args);
-  VA_CLOSE (args);
+  va_end (args);
 
   return newstr;
 }
@@ -179,22 +177,19 @@ char *
 reconcat (char *optr, const char *first, ...)
 {
   char *newstr;
+  va_list args;
 
   /* First compute the size of the result and get sufficient memory.  */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, char *, optr);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   newstr = XNEWVEC (char, vconcat_length (first, args) + 1);
-  VA_CLOSE (args);
+  va_end (args);
 
   /* Now copy the individual pieces to the result string. */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, char *, optr);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   vconcat_copy (newstr, first, args);
   if (optr) /* Done before VA_CLOSE so optr stays in scope for K&R C.  */
     free (optr);
-  VA_CLOSE (args);
+  va_end (args);
 
   return newstr;
 }
diff --git a/libiberty/snprintf.c b/libiberty/snprintf.c
index 1e3b038..49bcd83 100644
--- a/libiberty/snprintf.c
+++ b/libiberty/snprintf.c
@@ -1,5 +1,5 @@
 /* Implement the snprintf function.
-   Copyright (C) 2003, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2011, 2013 Free Software Foundation, Inc.
    Written by Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.
 
 This file is part of the libiberty library.  This library is free
@@ -53,11 +53,9 @@ int
 snprintf (char *s, size_t n, const char *format, ...)
 {
   int result;
-  VA_OPEN (ap, format);
-  VA_FIXEDARG (ap, char *, s);
-  VA_FIXEDARG (ap, size_t, n);
-  VA_FIXEDARG (ap, const char *, format);
+  va_list ap;
+  va_start (ap, format);
   result = vsnprintf (s, n, format, ap);
-  VA_CLOSE (ap);
+  va_end (ap);
   return result;
 }
diff --git a/libiberty/vasprintf.c b/libiberty/vasprintf.c
index 85de542..4925060 100644
--- a/libiberty/vasprintf.c
+++ b/libiberty/vasprintf.c
@@ -1,6 +1,6 @@
 /* Like vsprintf but provides a pointer to malloc'd storage, which must
    be freed by the caller.
-   Copyright (C) 1994, 2003, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1994, 2003, 2011, 2013 Free Software Foundation, Inc.
 
 This file is part of the libiberty library.
 Libiberty is free software; you can redistribute it and/or
@@ -165,10 +165,10 @@ static void ATTRIBUTE_PRINTF_1
 checkit (const char *format, ...)
 {
   char *result;
-  VA_OPEN (args, format);
-  VA_FIXEDARG (args, const char *, format);
+  va_list args;
+  va_start (args, format);
   vasprintf (&result, format, args);
-  VA_CLOSE (args);
+  va_end (args);
 
   if (strlen (result) < (size_t) global_total_width)
     printf ("PASS: ");
diff --git a/libiberty/vsnprintf.c b/libiberty/vsnprintf.c
index 6c0afa6..2c441a7 100644
--- a/libiberty/vsnprintf.c
+++ b/libiberty/vsnprintf.c
@@ -1,5 +1,5 @@
 /* Implement the vsnprintf function.
-   Copyright (C) 2003, 2004, 2005, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005, 2011, 2013 Free Software Foundation, Inc.
    Written by Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.
 
 This file is part of the libiberty library.  This library is free
@@ -95,12 +95,10 @@ static int ATTRIBUTE_PRINTF_3
 checkit (char *s, size_t n, const char *format, ...)
 {
   int result;
-  VA_OPEN (ap, format);
-  VA_FIXEDARG (ap, char *, s);
-  VA_FIXEDARG (ap, size_t, n);
-  VA_FIXEDARG (ap, const char *, format);
+  va_list ap;
+  va_start (ap, format);
   result = vsnprintf (s, n, format, ap);
-  VA_CLOSE (ap);
+  va_end (ap);
   return result;
 }
 
-- 
1.8.1.4



More information about the Gcc-patches mailing list