[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

Argyrios Kyrtzidis kyrtzidis at apple.com
Fri Oct 26 13:54:00 PDT 2012


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




More information about the cfe-commits mailing list