From cc99b3ca9e9a4fba24db1931d07f00dd5045fb4a Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Mon, 21 Jun 2010 16:08:37 +0000 Subject: 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 --- clang/lib/Sema/SemaDecl.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'clang/lib/Sema/SemaDecl.cpp') 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); -- cgit v1.2.3