diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2010-06-21 16:08:37 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-06-21 16:08:37 +0000 |
| commit | cc99b3ca9e9a4fba24db1931d07f00dd5045fb4a (patch) | |
| tree | 0da063675568388da954e287bc6321de2ec461d1 /clang/lib/Sema/SemaDecl.cpp | |
| parent | bbc29ea82197eccd2dc17af1bc3174a3f0bcb223 (diff) | |
| download | bcm5719-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.cpp | 4 |
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); |

