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: [PING][patch] PR81794: have "would be stringified in traditional C" warning in libcpp/macro.c be controlled by -Wtraditional


Ping again: https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00123.html

On 11/2/17, Eric Gallager <egall@gwmail.gwu.edu> wrote:
> Ping: https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01834.html
>
> On 10/25/17, Eric Gallager <egall@gwmail.gwu.edu> wrote:
>> On Sat, Sep 30, 2017 at 8:05 PM, Eric Gallager <egall@gwmail.gwu.edu>
>> wrote:
>>> On Fri, Sep 29, 2017 at 11:15 AM, David Malcolm <dmalcolm@redhat.com>
>>> wrote:
>>>> On Sun, 2017-09-17 at 20:00 -0400, Eric Gallager wrote:
>>>>> Attached is a version of
>>>>> https://gcc.gnu.org/ml/gcc-patches/2017-05/msg00481.html that
>>>>> contains
>>>>> a combination of both the fix and the testcase update, as requested
>>>>> in
>>>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81794#c2
>>>>>
>>>>> I had to use a different computer than I usually use to send this
>>>>> email, as the hard drive that originally had this patch is currently
>>>>> unresponsive. Since it's also the one with my ssh keys on it, I can't
>>>>> commit with it. Sorry if the ChangeLogs get mangled.
>>>>
>>>> Thanks for putting this together; sorry about the delay in reviewing
>>>> it.
>>>>
>>>> The patch mostly looks good.
>>>>
>>>> Did you perform a full bootstrap and run of the testsuite with this
>>>> patch?  If so, it's best to state this in the email, so that we know
>>>> that the patch has survived this level of testing.
>>>
>>> Yes, I bootstrapped with it, but I haven't done a full run of the
>>> testsuite with it yet; just the one testcase I updated.
>>
>> Update: I've now run the testsuite with it; test results are here:
>> https://gcc.gnu.org/ml/gcc-testresults/2017-10/msg01751.html
>> I'm pretty sure all the FAILs are unrelated to this patch.
>>
>>>
>>>>
>>>> Some nits below:
>>>>
>>>>> libcpp/ChangeLog:
>>>>>
>>>>> 2017-03-24  Eric Gallager  <egall@gwmail.gwu.edu>
>>>>>
>>>>>      * macro.c (check_trad_stringification): Have warning be
>>>>> controlled by
>>>>>      -Wtraditional.
>>>>>
>>>>> gcc/testsuite/ChangeLog:
>>>>>
>>>>> 2017-09-17  Eric Gallager  <egall@gwmail.gwu.edu>
>>>>>
>>>>>     PR preprocessor/81794
>>>>>     * gcc.dg/pragma-diag-7.c: Update to include check for
>>>>>     stringification.
>>>>>
>>>>> On Sat, May 6, 2017 at 11:33 AM, Eric Gallager <egall@gwmail.gwu.edu>
>>>>> wrote:
>>>>> > Pinging this: https://gcc.gnu.org/ml/gcc-patches/2017-03/msg01325.h
>>>>> > tml
>>>>> >
>>>>> > On 3/24/17, Eric Gallager <egall@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  <egall@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.
>>>>
>>>> [...]
>>>>
>>>>> diff --git a/gcc/testsuite/gcc.dg/pragma-diag-7.c
>>>>> b/gcc/testsuite/gcc.dg/pragma-diag-7.c
>>>>> index 402ee56..e06c410 100644
>>>>> --- a/gcc/testsuite/gcc.dg/pragma-diag-7.c
>>>>> +++ b/gcc/testsuite/gcc.dg/pragma-diag-7.c
>>>>> @@ -7,3 +7,16 @@ unsigned long bad = 1UL; /* { dg-warning "suffix" }
>>>>> */
>>>>>  /* Note the extra space before the pragma on this next line: */
>>>>>   #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 with an unpatched GCC: */
>>>>> +#pragma GCC diagnostic ignored "-Wtraditional"
>>>>> +
>>>>> +/* { dg-bogus "would be stringified" .+1 } */
>>>>
>>>> As far as I can tell, this dg-bogus line doesn't actually get matched;
>>>> when I run the testsuite without the libcpp fix, I get:
>>>>
>>>>   FAIL: gcc.dg/pragma-diag-7.c (test for excess errors)
>>>>
>>>> If I update the dg-bogus line to read:
>>>>
>>>>   /* { dg-bogus "would be stringified" "" { target *-*-* } .+1 } */
>>>>
>>>> then it's matched, and I get:
>>>>
>>>>   FAIL: gcc.dg/pragma-diag-7.c  (test for bogus messages, line 16)
>>>>
>>>> I believe that as written the ".+1" 2nd argument is interpreted as a
>>>> human-readable description of the problem, rather than as a line
>>>> offset; I believe you would need to add positional args for the
>>>> description and filter so that the line offset is argument 4.
>>>>
>>>> That said, I think the dg-bogus here is unnecessary: if the warning is
>>>> erroneously emitted, we get:
>>>>
>>>>   FAIL: gcc.dg/pragma-diag-7.c (test for excess errors)
>>>>
>>>> (where "errors" really means "excess errors, warnings and extraneous
>>>> gunk that isn't a note").
>>>>
>>>> So this testcase hunk is good without the dg-bogus line.
>>>
>>> OK, the line can be removed when committing.
>>>
>>>>
>>>>> +#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)
>>>>> diff --git a/libcpp/macro.c b/libcpp/macro.c
>>>>> index de18c22..71363b5 100644
>>>>> --- a/libcpp/macro.c
>>>>> +++ b/libcpp/macro.c
>>>>> @@ -3316,7 +3316,7 @@ check_trad_stringification (cpp_reader *pfile,
>>>>> const cpp_macro *macro,
>>>>>         if (NODE_LEN (node) == len
>>>>>             && !memcmp (p, NODE_NAME (node), len))
>>>>>           {
>>>>> -           cpp_error (pfile, CPP_DL_WARNING,
>>>>> +           cpp_warning (pfile, CPP_W_TRADITIONAL,
>>>>>          "macro argument \"%s\" would be stringified in traditional
>>>>> C",
>>>>>                        NODE_NAME (node));
>>>>>             break;
>>>>
>>>> This hunk looks good.
>>>>
>>>> So the patch is good if you drop the bogus "dg-bogus" line, provided
>>>> that it's bootstrapped and regression-tested.
>>>>
>>>> Did you complete the FSF copyright assignment paperwork, and do you
>>>> have access to the GCC compile farm? (that could help with testing)
>>>
>>> Yes, I have a copyright assignment on file (it was a prerequisite for
>>> putting my name in the MAINTAINERS file), but no, I don't think I have
>>> access to the GCC compile farm. I agree, it'd be much better to test
>>> on the compile farm than on my own computer, since running the
>>> testsuite on my own computer usually takes an entire day (it's really
>>> old and slow).
>>
>> Update: I now have access to the GCC compile farm; that's where I
>> produced the test results linked above.
>>
>>>
>>>>
>>>> Thanks again for working on this (and for the work you've been doing in
>>>> Bugzilla); I hope you get your hard drive back...
>>>>
>>>> Dave
>>>
>>> And thank you for all your work on improving gcc's diagnostics! If
>>> you'd like to send me a new hard drive, feel free to contact me
>>> off-list for my mailing address.
>>
>> Update on hard drive status: I've ordered and received a new one, I
>> just need to salvage data off the old one and then install the new one
>> and then I should be good for committing again. I'd still appreciate
>> if someone else could commit for me while I'm still working on fixing
>> it though.
>
> New update on hard drive status: All data is salvaged and transferred,
> but installing the new hard drive into the internal hard drive slot
> didn't actually fixing the disk errors I was experiencing. It works
> perfectly fine when I boot from it as an external hard drive, though,
> which is what I'm doing now. So, I'm pretty sure I can commit again
> now. So, OK to commit this patch?
>
>>
>>>
>>> Thanks,
>>> Eric
>>
>


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