On Thu, Aug 12, 2021 at 10:46:23AM -0400, Jason Merrill wrote:
> > --- libcpp/expr.c   2021-05-07 10:34:46.345122608 +0200
> > +++ libcpp/expr.c   2021-08-12 09:54:01.837556365 +0200
> > @@ -783,13 +783,13 @@ cpp_classify_number (cpp_reader *pfile,
> >         /* Traditional C only accepted the 'L' suffix.
> >            Suppress warning about 'LL' with -Wno-long-long.  */
> > -      if (CPP_WTRADITIONAL (pfile) && ! cpp_sys_macro_p (pfile))
> > +      if (CPP_WTRADITIONAL (pfile))
> >     {
> >       int u_or_i = (result & (CPP_N_UNSIGNED|CPP_N_IMAGINARY));
> >       int large = (result & CPP_N_WIDTH) == CPP_N_LARGE
> >                    && CPP_OPTION (pfile, cpp_warn_long_long);
> > -     if (u_or_i || large)
> > +     if ((u_or_i || large) && ! cpp_sys_macro_p (pfile))
> >         cpp_warning_with_line (pfile, large ? CPP_W_LONG_LONG : 
> > CPP_W_TRADITIONAL,
> >                                virtual_location, 0,
> >                                "traditional C rejects the \"%.*s\" suffix",
> > The builtin macros at least currently don't add any suffixes
> > or numbers -Wtraditional would like to warn about.
> 
> So whether cpp_sys_macro_p returns true or false has no practical effect.

Yes.

> > For floating
> > point suffixes, -Wtraditional calls cpp_sys_macro_p only right
> > away before emitting the warning, but in the above case the ICE
> > is because cpp_sys_macro_p is called even if the number doesn't
> > have any suffixes (that is I think always for builtin macros
> > right now).
> > 
> > Bootstrapped/regtested on x86_64-linux and i686-linux.
> > Ok for trunk, or do you prefer to return true for builtin
> > macros from cpp_sys_macro_p instead
> 
> I think I'd prefer to return true, since builtin macros are also in the
> broader category of macros provided by the implementation.  OK with that
> change.

Ok, will test that.  Thanks.

        Jakub

Reply via email to