diff options
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 3 | ||||
-rw-r--r-- | test/Sema/tentative-decls.c | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 255fd6c5ba..62b9bff3de 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -841,8 +841,7 @@ bool Sema::MergeVarDecl(VarDecl *New, Decl *OldD) { // the prior declaration. If no prior declaration is visible, or // if the prior declaration specifies no linkage, then the // identifier has external linkage. - if ((New->hasExternalStorage() || New->getStorageClass() == VarDecl::None) && - Old->hasLinkage()) + if (New->hasExternalStorage() && Old->hasLinkage()) /* Okay */; else if (New->getStorageClass() != VarDecl::Static && Old->getStorageClass() == VarDecl::Static) { diff --git a/test/Sema/tentative-decls.c b/test/Sema/tentative-decls.c index fc0d50086e..ea8d622551 100644 --- a/test/Sema/tentative-decls.c +++ b/test/Sema/tentative-decls.c @@ -27,7 +27,10 @@ extern int i1; // expected-note {{previous definition is here}} static int i1; // expected-error{{static declaration of 'i1' follows non-static declaration}} static int i2 = 5; // expected-note 1 {{previous definition is here}} -int i2 = 3; // expected-error{{redefinition of 'i2'}} +int i2 = 3; // expected-error{{non-static declaration of 'i2' follows static declaration}} + +static int i3 = 5; +extern int i3; __private_extern__ int pExtern; int pExtern = 0; |