From: Rafael Espindola Date: Sun, 30 Dec 2012 21:42:26 +0000 (+0000) Subject: Don't warn on unused member functions that are extern because of a typedef. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=87b8127c2c65c8229e5b874c10a33f1ce13493ad;p=clang Don't warn on unused member functions that are extern because of a typedef. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171267 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp index 0c5e8db1aa..a639d3bc46 100644 --- a/lib/Sema/Sema.cpp +++ b/lib/Sema/Sema.cpp @@ -363,6 +363,9 @@ static bool ShouldRemoveFromUnused(Sema *SemaRef, const DeclaratorDecl *D) { return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck); } + if (D->getLinkage() == ExternalLinkage) + return true; + return false; } diff --git a/test/SemaCXX/warn-unused-filescoped.cpp b/test/SemaCXX/warn-unused-filescoped.cpp index 1e0802e42d..4cb38d997b 100644 --- a/test/SemaCXX/warn-unused-filescoped.cpp +++ b/test/SemaCXX/warn-unused-filescoped.cpp @@ -118,3 +118,17 @@ namespace unused { } } x; // expected-warning {{unused variable}} } + +namespace test6 { + typedef struct { + void bar(); + } A; + + typedef struct { + void bar(); // expected-warning {{unused member function 'bar'}} + } *B; + + struct C { + void bar(); + }; +}