summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGDeclCXX.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-04-28 22:17:59 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-04-28 22:17:59 +0000
commit27d69dbbd073b5a4973d7089dcb37f764a76ebb9 (patch)
treed2a7bd670c8adaedce38c20ed88e33da5f18d9ee /clang/lib/CodeGen/CGDeclCXX.cpp
parent923cecab5c9361720e81bb098627743e83d21576 (diff)
downloadbcm5719-llvm-27d69dbbd073b5a4973d7089dcb37f764a76ebb9.tar.gz
bcm5719-llvm-27d69dbbd073b5a4973d7089dcb37f764a76ebb9.zip
CodeGen: Fix linkage of reference temporaries
Summary: A reference temporary should inherit the linkage of the variable it initializes. Otherwise, we may hit cases where a reference temporary wouldn't have the same value in all translation units. Reviewers: rsmith Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D3515 llvm-svn: 207451
Diffstat (limited to 'clang/lib/CodeGen/CGDeclCXX.cpp')
-rw-r--r--clang/lib/CodeGen/CGDeclCXX.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp
index 7a0ef8948e4..5f8e8747ab9 100644
--- a/clang/lib/CodeGen/CGDeclCXX.cpp
+++ b/clang/lib/CodeGen/CGDeclCXX.cpp
@@ -417,8 +417,8 @@ void CodeGenFunction::GenerateCXXGlobalVarDeclInitFunc(llvm::Function *Fn,
// Use guarded initialization if the global variable is weak. This
// occurs for, e.g., instantiated static data members and
// definitions explicitly marked weak.
- if (Addr->getLinkage() == llvm::GlobalValue::WeakODRLinkage ||
- Addr->getLinkage() == llvm::GlobalValue::WeakAnyLinkage) {
+ if (llvm::GlobalVariable::isWeakLinkage(Addr->getLinkage()) ||
+ llvm::GlobalVariable::isLinkOnceLinkage(Addr->getLinkage())) {
EmitCXXGuardedInit(*D, Addr, PerformInit);
} else {
EmitCXXGlobalVarDeclInit(*D, Addr, PerformInit);
OpenPOWER on IntegriCloud