[cfe-commits] r166361 - in /cfe/trunk: lib/CodeGen/CGExpr.cpp lib/Sema/SemaExpr.cpp test/CodeGenCXX/const-init-cxx11.cpp test/CodeGenCXX/for-range.cpp test/CodeGenCXX/lambda-expressions.cpp test/SemaCXX/lambda-expressions.cpp

Nico Weber thakis at chromium.org
Fri Oct 26 14:16:14 PDT 2012


FWIW, I found -Wunneeded-internal-declaration fairly confusing. I
tried to turn it on for chromium, and it fired in a few instances
where the function it warned about was used for something and couldn't
be easily removed.

Nico

On Fri, Oct 26, 2012 at 1:54 PM, Argyrios Kyrtzidis <kyrtzidis at apple.com> wrote:
> On Oct 26, 2012, at 1:35 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>
>> Argyrios: It looks like you added this warning in r129794. Can you
>> comment on what it's intended to detect?
>
> variables/functions with internal linkage that are not used from the codegen perspective.
> This differs from -Wunused which will consider a 'use' even in an unevaluated context.
> For example:
>
> static void foo() { }
>
> this gives:
> warning: unused function 'foo' [-Wunused-function]
>
> static void foo() { }
> template <typename T>
> void goo() {
>   foo();
> }
>
> this gives:
> warning: function 'foo' is not needed and will not be emitted [-Wunneeded-internal-declaration]
>
> -Argyrios
>
>>
>> On Fri, Oct 26, 2012 at 9:52 AM, Craig Topper <craig.topper at gmail.com> wrote:
>>> No its used right here in the same file. It only warns on C++11 enabled
>>> builds.
>>>
>>>    virtual void getAnalysisUsage(AnalysisUsage &AU) const {
>>>      AU.setPreservesAll();
>>>      AU.addRequiredID(PreVerifyID);
>>>
>>>
>>> On Fri, Oct 26, 2012 at 9:41 AM, Matthieu Monrocq
>>> <matthieu.monrocq at gmail.com> wrote:
>>>>
>>>>
>>>>
>>>> On Fri, Oct 26, 2012 at 8:51 AM, Richard Smith <richard at metafoo.co.uk>
>>>> wrote:
>>>>>
>>>>> On Thu, Oct 25, 2012 at 10:48 PM, Craig Topper <craig.topper at gmail.com>
>>>>> wrote:
>>>>>> I think this change broke bootstrap builds with C++11 and -Werror
>>>>>> enabled.
>>>>>>
>>>>>> lib/VMCore/Verifier.cpp:116:14: error: variable 'PreVerifyID' is not
>>>>>> needed
>>>>>> and will not be emitted [-Werror,-Wunneeded-internal-declaration]
>>>>>> static char &PreVerifyID = PreVerifier::ID;
>>>>>
>>>>> Yes, I think this change probably caused that. I'm unclear on what the
>>>>> purpose of that warning is: it appears to be warning on variables
>>>>> which are referenced but not odr-used, which seems like a pretty
>>>>> questionable thing to warn on. It'd be easy enough to fix this by
>>>>> teaching Sema::ShouldWarnIfUnusedFileScopedDecl to ignore references
>>>>> (along with its existing check for const variables), but I'm not sure
>>>>> that's the right fix, since I'm not really sure what the intent is
>>>>> here.
>>>>
>>>>
>>>>
>>>> Is not PreVerifyID just an unused variable ? (not the difference with
>>>> PreVerifier::ID)
>>>>
>>>> -- Matthieu
>>>
>>>
>>>
>>>
>>> --
>>> ~Craig
>
> _______________________________________________
> 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