Pinging this: https://gcc.gnu.org/ml/gcc-patches/2017-03/msg01325.html
On 3/24/17, Eric Gallager <eg...@gwmail.gwu.edu> wrote: > It seemed odd to me that gcc was issuing a warning about compatibility > with traditional C that I couldn't turn off by pushing/popping > -Wtraditional over the problem area, so I made the attached (minor) > patch to fix it. Survives bootstrap, but the only testing I've done > with it has been compiling the one file that was giving me issues > previously, which I'd need to reduce further to turn it into a proper > test case. > > Thanks, > Eric Gallager > > libcpp/ChangeLog: > > 2017-03-24 Eric Gallager <eg...@gwmail.gwu.edu> > > * macro.c (check_trad_stringification): Have warning be controlled by > -Wtraditional. > So I did the reducing I mentioned above and now have a testcase for it; it was pretty similar to the one from here: https://gcc.gnu.org/ml/gcc-patches/2017-03/msg01319.html so I combined them into a single testcase and have attached the combined version. I can confirm that the testcase passes with my patch applied.
/* { dg-do compile } */ #pragma GCC diagnostic push #pragma GCC diagnostic warning "-Wtraditional" unsigned long bad = 1UL; /* { dg-warning "suffix" } */ /* The extra space before the pragma on this next line avoids a warning: */ #pragma GCC diagnostic pop unsigned long ok_again = 2UL; /* { dg-bogus "suffix" } */ /* Redundant with the previous pop, but just shows that it fails to stop the * following warning: */ #pragma GCC diagnostic ignored "-Wtraditional" /* { dg-bogus "would be stringified" .+1 } */ #define UNW_DEC_PROLOGUE(fmt, body, rlen, arg) \ do { \ unw_rlen = rlen; \ *(int *)arg = body; \ printf(" %s:%s(rlen=%lu)\n", \ fmt, (body ? "body" : "prologue"), (unsigned long)rlen); \ } while (0)