]> granicus.if.org Git - clang/commitdiff
Fix a recent linkage regression.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 4 Apr 2013 16:43:41 +0000 (16:43 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 4 Apr 2013 16:43:41 +0000 (16:43 +0000)
Now that we don't have a semantic storage class, use the linkage.

Thanks to Bruce Stephens for reporting this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178766 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/SemaCXX/linkage2.cpp

index 436fca35cbc83d9be44487be1d7c65b1bafc3e8e..af0b2bb72c2ffbe8a0baa3910de7b3f7c9aa2618 100644 (file)
@@ -2328,7 +2328,7 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, Decl *OldD, Scope *S) {
   // storage classes.
   if (!isa<CXXMethodDecl>(New) && !isa<CXXMethodDecl>(Old) &&
       New->getStorageClass() == SC_Static &&
-      Old->getStorageClass() != SC_Static &&
+      Old->hasExternalLinkage() &&
       !New->getTemplateSpecializationInfo() &&
       !canRedefineFunction(Old, getLangOpts())) {
     if (getLangOpts().MicrosoftExt) {
index 94ac25c99d6b61536530945a76f9820dd19e6fdf..d1aee4e55d9438d8590bf910d5f61efd609c7eaf 100644 (file)
@@ -134,3 +134,9 @@ namespace test12 {
     extern const int n;
   }
 }
+
+namespace test13 {
+  static void a(void);
+  extern void a();
+  static void a(void) {}
+}