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 | d4eca014e0802e12fdd561eeedee0c9388fc98e7 (patch) | |
tree | 1220096e41472d00ed159014ddf740a5e1658c3b | |
parent | 76ce7416ae11bd5e5d4f84f8e38efda00aef1b81 (diff) | |
download | bcm5719-llvm-d4eca014e0802e12fdd561eeedee0c9388fc98e7.tar.gz bcm5719-llvm-d4eca014e0802e12fdd561eeedee0c9388fc98e7.zip |
Thanks to Eli for pointing out my misreading of 6.2.2p5
llvm-svn: 67530
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 3 | ||||
-rw-r--r-- | clang/test/Sema/tentative-decls.c | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 255fd6c5ba4..62b9bff3def 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/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/clang/test/Sema/tentative-decls.c b/clang/test/Sema/tentative-decls.c index fc0d50086ea..ea8d6225510 100644 --- a/clang/test/Sema/tentative-decls.c +++ b/clang/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; |