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