summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-06-21 16:08:37 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-06-21 16:08:37 +0000
commitcc99b3ca9e9a4fba24db1931d07f00dd5045fb4a (patch)
tree0da063675568388da954e287bc6321de2ec461d1 /clang/lib/Sema/SemaDecl.cpp
parentbbc29ea82197eccd2dc17af1bc3174a3f0bcb223 (diff)
downloadbcm5719-llvm-cc99b3ca9e9a4fba24db1931d07f00dd5045fb4a.tar.gz
bcm5719-llvm-cc99b3ca9e9a4fba24db1931d07f00dd5045fb4a.zip
Fixes a corner case bug whereby declaring and defining an extern variable in a
particular sequence causes its definition to not be generated in the object file. (fixes radar 8071804). llvm-svn: 106424
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 528cc65abfc..4a7c877fd98 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -1455,6 +1455,10 @@ void Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {
return;
}
+ if (New->hasExternalStorage() &&
+ Old->getLinkage() == InternalLinkage)
+ New->setStorageClass(Old->getStorageClass());
+
// Keep a chain of previous declarations.
New->setPreviousDeclaration(Old);
OpenPOWER on IntegriCloud