]> granicus.if.org Git - clang/commitdiff
Don't warn on unused member functions that are extern because of a typedef.
authorRafael Espindola <rafael.espindola@gmail.com>
Sun, 30 Dec 2012 21:42:26 +0000 (21:42 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sun, 30 Dec 2012 21:42:26 +0000 (21:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171267 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/Sema.cpp
test/SemaCXX/warn-unused-filescoped.cpp

index 0c5e8db1aa80971f44c47fcd35951ef876d16162..a639d3bc464ed831c663c0eb857bc3686cfd1ef0 100644 (file)
@@ -363,6 +363,9 @@ static bool ShouldRemoveFromUnused(Sema *SemaRef, const DeclaratorDecl *D) {
       return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck);
   }
 
+  if (D->getLinkage() == ExternalLinkage)
+    return true;
+
   return false;
 }
 
index 1e0802e42dc10f194e9e4693da81a74270d5ebca..4cb38d997b133f9cefacfb0cd66725a3d3464b9d 100644 (file)
@@ -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();
+  };
+}