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
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 528cc65..4a7c877 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -1455,6 +1455,10 @@
return;
}
+ if (New->hasExternalStorage() &&
+ Old->getLinkage() == InternalLinkage)
+ New->setStorageClass(Old->getStorageClass());
+
// Keep a chain of previous declarations.
New->setPreviousDeclaration(Old);