[cfe-commits] r164677 -

Sean Silva silvas at purdue.edu
Fri Sep 28 12:03:55 PDT 2012


>> Since stdin is empty, then there would be no expected-* comment, so
>> the test would fail.
>
> The fixed test would fail too.

I feel like I'm missing something here...

How would the fixed test fail too? The test has the line (line 7):

        foo("%s", a); // expected-warning {{format specifies type
'char *' but the argument has type 'unsigned int'}}

That would make the test not be counted as "empty".

--Sean Silva

On Fri, Sep 28, 2012 at 1:09 AM, Nico Weber <thakis at chromium.org> wrote:
> On Fri, Sep 28, 2012 at 1:59 PM, Sean Silva <silvas at purdue.edu> wrote:
>>>> Alternatively (and slightly more generally) how about teaching -verify to
>>>> fail if it doesn't find any expected-* comments to check (like FileCheck
>>>> does)?
>>>
>>> That wouldn't have helped in this case though, would it? there's no
>>> expected- comment in this file.
>>
>> Wut? I think that what Richard was proposing elegantly addresses this
>> case. Basically, it fails when it doesn't see an expected-* comment.
>
> Right. This test here doesn't have an expected-* comment.
>
>> Since stdin is empty, then there would be no expected-* comment, so
>> the test would fail.
>
> The fixed test would fail too.
>
>>
>> Richard, how do you suggest the diagnostic should be like? I fear that
>> an error like "didn't see an expected-* comment" wouldn't be that
>> helpful in diagnosing the issue at hand (missing input file,
>> defaulting to stdin), even though it does accurately reflect the
>> situation. As a hack, a note could be added, but that doesn't seem
>> very in line with Clang style.
>>
>> Maybe it is worthwhile to require an explicit input file AND fail if
>> no expected-* comments are found?
>>
>>> Sounds resonable. Wanna give it a shot? :-)
>>
>> Yeah, once we settle on a way to do this I'll prepare a patch (unless
>> someone beats me to it).
>>
>> --Sean Silva
>>
>> On Thu, Sep 27, 2012 at 10:26 PM, Nico Weber <thakis at chromium.org> wrote:
>>> On Fri, Sep 28, 2012 at 10:24 AM, Richard Smith <richard at metafoo.co.uk> wrote:
>>>> On Thu, Sep 27, 2012 at 6:05 PM, Nico Weber <thakis at chromium.org> wrote:
>>>>>
>>>>> On Fri, Sep 28, 2012 at 1:31 AM, Sean Silva <silvas at purdue.edu> wrote:
>>>>> >> I couldn't think of a great way. If no filename argument is present,
>>>>> >> -cc1 -verify reads its input from stdin, which is a valid usecase. I
>>>>> >> think lit closes stdin when it forks, which is why -cc1 doesn't just
>>>>> >> wait for eof forever in this case.
>>>>> >
>>>>> > It is a valid use case, but how about just requiring that it be
>>>>> > explicit (at least for -verify)? Forcing it to be explicit would
>>>>> > preserve the use case but make the error case impossible.
>>>>>
>>>>> Sounds resonable. Wanna give it a shot? :-)
>>>>
>>>>
>>>> Alternatively (and slightly more generally) how about teaching -verify to
>>>> fail if it doesn't find any expected-* comments to check (like FileCheck
>>>> does)?
>>>
>>> That wouldn't have helped in this case though, would it? there's no
>>> expected- comment in this file.
>>>
>>>>
>>>>>
>>>>> >
>>>>> > -- Sean Silva
>>>>> >
>>>>> > On Thu, Sep 27, 2012 at 6:22 AM, David Blaikie <dblaikie at gmail.com>
>>>>> > wrote:
>>>>> >>  /cfe/trunk/test/Sema/no-format-y2k-turnsoff-format.c
>>>>> >> MIME-Version: 1.0
>>>>> >> Content-Type: text/plain; charset="utf-8"
>>>>> >> Content-Transfer-Encoding: 7bit
>>>>> >>
>>>>> >> If clang was going to read from stdin, wouldn't it need a -x to tell it
>>>>> >> what kind of input it is? Even if it has a default, an empty file is
>>>>> >> not a valid TU, at least in C++, though I guess if it has a default it
>>>>> >> would be C and an empty file is probably valid C. Perhaps a warning
>>>>> >> there at least could be handy
>>>>> >> From: Nico Weber
>>>>> >> Sent: 9/27/2012 7:43 AM
>>>>> >> To: Sean Silva
>>>>> >> Cc: Nico Weber; cfe-commits at cs.uiuc.edu
>>>>> >> Subject: Re: [cfe-commits] r164677
>>>>> >> - /cfe/trunk/test/Sema/no-format-y2k-turnsoff-format.c
>>>>> >> On Thu, Sep 27, 2012 at 2:46 AM, Sean Silva <silvas at purdue.edu> wrote:
>>>>> >>> Is there some way to ensure that this doesn't ever happen again? Like
>>>>> >>> having -verify warn/fail if there is no input? That would allow fixing
>>>>> >>> all of these cases in a single fell swoop and ensure that it never
>>>>> >>> happens again.
>>>>> >>
>>>>> >> I couldn't think of a great way. If no filename argument is present,
>>>>> >> -cc1 -verify reads its input from stdin, which is a valid usecase. I
>>>>> >> think lit closes stdin when it forks, which is why -cc1 doesn't just
>>>>> >> wait for eof forever in this case.
>>>>> >>
>>>>> >> I suppose lit could check if clang_cc1 is the first command on the run
>>>>> >> line and then add a flag that tells cc1 to error out if it's reading
>>>>> >> from stdin, but seems brittle.
>>>>> >>
>>>>> >> Do you have a good suggestion?
>>>>> >>
>>>>> >>>
>>>>> >>> -- Sean Silva
>>>>> >>>
>>>>> >>> On Wed, Sep 26, 2012 at 5:02 AM, Nico Weber <nicolasweber at gmx.de>
>>>>> >>> wrote:
>>>>> >>>> Author: nico
>>>>> >>>> Date: Wed Sep 26 04:02:07 2012
>>>>> >>>> New Revision: 164677
>>>>> >>>>
>>>>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=164677&view=rev
>>>>> >>>> Log:
>>>>> >>>> Make this test actually test something
>>>>> >>>>
>>>>> >>>> Modified:
>>>>> >>>>     cfe/trunk/test/Sema/no-format-y2k-turnsoff-format.c
>>>>> >>>>
>>>>> >>>> Modified: cfe/trunk/test/Sema/no-format-y2k-turnsoff-format.c
>>>>> >>>> URL:
>>>>> >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/no-format-y2k-turnsoff-format.c?rev=164677&r1=164676&r2=164677&view=diff
>>>>> >>>>
>>>>> >>>> ==============================================================================
>>>>> >>>> --- cfe/trunk/test/Sema/no-format-y2k-turnsoff-format.c (original)
>>>>> >>>> +++ cfe/trunk/test/Sema/no-format-y2k-turnsoff-format.c Wed Sep 26
>>>>> >>>> 04:02:07 2012
>>>>> >>>> @@ -1,4 +1,4 @@
>>>>> >>>> -// RUN: %clang_cc1 -verify -fsyntax-only -Wformat -Wno-format-y2k
>>>>> >>>> +// RUN: %clang_cc1 -verify -fsyntax-only -Wformat -Wno-format-y2k %s
>>>>> >>>>  // rdar://9504680
>>>>> >>>>
>>>>> >>>>  void foo(const char *, ...) __attribute__((__format__ (__printf__,
>>>>> >>>> 1, 2)));
>>>>> >>>>
>>>>> >>>>
>>>>> >>>> _______________________________________________
>>>>> >>>> cfe-commits mailing list
>>>>> >>>> cfe-commits at cs.uiuc.edu
>>>>> >>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>> >>> _______________________________________________
>>>>> >>> cfe-commits mailing list
>>>>> >>> cfe-commits at cs.uiuc.edu
>>>>> >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>> >> _______________________________________________
>>>>> >> cfe-commits mailing list
>>>>> >> cfe-commits at cs.uiuc.edu
>>>>> >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>> _______________________________________________
>>>>> cfe-commits mailing list
>>>>> cfe-commits at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>
>>>>



More information about the cfe-commits mailing list