This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Wrap a macro in do {} while (0) (PR sanitizer/80063)


On Mon, Mar 20, 2017 at 09:37:10AM -0400, Jason Merrill wrote:
> On Mon, Mar 20, 2017 at 9:28 AM, Marek Polacek <polacek@redhat.com> wrote:
> >  #define DEF_SANITIZER_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
> > +  do {                                                                 \
> > +    decl = add_builtin_function ("__builtin_" NAME, TYPE, ENUM,                \
> > +                                BUILT_IN_NORMAL, NAME, NULL_TREE);     \
> > +    set_call_expr_flags (decl, ATTRS);                                 \
> > +    set_builtin_decl (ENUM, decl, true);                               \
> > +  } while (0);
> 
> We leave out the trailing ; in a macro like this.

If we only use them for code, sure.  But DEF_*BUILTIN is used also to
define the names, enum values etc. where it needs other separators, so
*.def files don't put any separator after the closing ).

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]