diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-03-23 16:17:01 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-03-23 16:17:01 +0000 |
commit | 38179b29df101e3f55dbdff4d15d4d55cd82e2bd (patch) | |
tree | 35a664c7afd3db73de539bec27f458b5bd7c94dd | |
parent | c50b00dbd843cd929b5f220d4a8699852249f64c (diff) |
Thanks to Eli for pointing out my misreading of 6.2.2p5
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67530 91177308-0d34-0410-b5e6-96231b3b80d8
-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; |