------- Comment #7 from rguenth at gcc dot gnu dot org 2010-06-05 19:10 ------- (In reply to comment #6) > (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.
Please instead make a static inline variadic alternative instead (so we still use variadic macros if available). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44426