[libiberty] Add ARG_UNUSED as a C++-friendly replacement for ATTRIBUTE_UNUSED

Bernardo Innocenti bernie@develer.com
Tue Jul 13 07:50:00 GMT 2004

Andrew Pinski wrote:

>>this patch adds the ARG_UNUSED() macro to be used in place of
>>ATTRIBUTE_UNUSED.  The syntax looks like this:
>>	void foo (ARG_UNUSED (int, x))
>>	{
>>	} 
>>The C++ frontend can't parse attribute((unused)) when it
>>appears after the variable name.  The cleanest work-around
>>is using the standard C++ syntax to specify unused
>>parameters, which can also be used when bootstrapping from
>>other C++ compilers.
>>This patch is a prerequisite for the upcoming C++ bootstrap
>>patches that I've been preparing.
> Huh? Yes it can from 3.4.0 and above.

Nevertheless, bootstrap from earlier versions of GCC
would fail (I was using Apple's version of GCC 3.3).

ansidecl.h enables ATTRIBUTE_UNUSED for any GCC > 2.7.
We could make the check stricter, like this:

 #if !defined(__cplusplus) || GCC_VERSION >= 3004
 #define ATTRIBUTE_UNUSED __attribute__ ((__unused__))

But I'd much prefer the ARG_UNUSED solution, which can
be made to work with and C or C++ compiler, using whatever
funny syntax the compiler requires.

This macro is in libiberty, which is about portability
across different OSes and compilers.

I also like the ARG_UNUSED syntax because it's somewhat
shorter to type.  (btw, Doxygen can parse it if you
define ARG_UNUSED(T,N) to "T N").

  // Bernardo Innocenti - Develer S.r.l., R&D dept.
\X/  http://www.develer.com/

More information about the Binutils mailing list