diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-04-28 22:17:59 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-04-28 22:17:59 +0000 |
commit | 27d69dbbd073b5a4973d7089dcb37f764a76ebb9 (patch) | |
tree | d2a7bd670c8adaedce38c20ed88e33da5f18d9ee /clang/lib/CodeGen/CGDeclCXX.cpp | |
parent | 923cecab5c9361720e81bb098627743e83d21576 (diff) | |
download | bcm5719-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.cpp | 4 |
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); |