------- Comment #6 from manu at gcc dot gnu dot org 2010-06-05 19:04 ------- (In reply to comment #4) > Subject: Re: [4.5/4.6 Regression] gcc 4.5.0 requires > c9x compiler to build > > On Sat, 5 Jun 2010, manu at gcc dot gnu dot org wrote: > > > Do you mean we should not use VA_ARGS in GCC? Then, what? static inline? Is > > this warned by -pedantic? Shouldn't it? > > Variadic macros are not standard C90 or C++98 and should only be used > *conditionally* if the compiler being used to build GCC supports them.
Why add a conditional definition if an alternative without VA_ARGS is needed? Using VA_ARGS+alternative does not seem to give any benefits. > I think > > #if GCC_VERSION >= 3000 || __STDC_VERSION__ >= 199901L > > is a suitable condition for support of variadic macros. > > Because these macros may be used *conditionally*, GCC is built with > -Wno-variadic-macros. I don't see the benefit on using them conditionally. I would rather not use them at all than have to fix something afterwards. > For the cases that are inserting UNKNOWN_LOCATION, I'd suggest just > changing all the call sites of the macro to pass UNKNOWN_LOCATION > explicitly, and removing the macro. That should deal with build_call_expr > and with build_call_nofold in builtins.c. OK for me but this was done on purpose. So I won't even try to fix this until the corresponding maintainer pre-approves such patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44426