aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.h
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-10-13 00:53:02 +0000
committerReid Kleckner <rnk@google.com>2017-10-13 00:53:02 +0000
commit3da37e05f7ccc32d64f3cab42359a02d9a8a79c0 (patch)
treee6045dbce4b674528de65a0ed1a028914c70e9cc /clang/lib/CodeGen/CodeGenModule.h
parent9a542f7553f198251869ef377a748e92e545c8f0 (diff)
downloadllvm-3da37e05f7ccc32d64f3cab42359a02d9a8a79c0.zip
llvm-3da37e05f7ccc32d64f3cab42359a02d9a8a79c0.tar.gz
llvm-3da37e05f7ccc32d64f3cab42359a02d9a8a79c0.tar.bz2
[MS] Don't bail on replacing dllimport vbase dtors with base dtors
Fix PR32990 by effectively reverting r283063 and solving it a different way. We want to limit the hack to not replace equivalent available_externally dtors specifically to libc++, which uses always_inline. It seems certain versions of libc++ do not provide all the symbols that an explicit template instantiation is expected to provide. If we get to the code that forms a real alias, only *then* check if this is available_externally, and do that by asking a better question, which is "is this a declaration for the linker?", because *that's* what means we can't form an alias to it. As a follow-on simplification, remove the InEveryTU parameter. Its last use guarded this code for forming aliases, but we should never form aliases to declarations, regardless of what we know about every TU. llvm-svn: 315656
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.h')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h
index c1a31c9..c28c62e 100644
--- a/clang/lib/CodeGen/CodeGenModule.h
+++ b/clang/lib/CodeGen/CodeGenModule.h
@@ -1145,8 +1145,7 @@ public:
/// are emitted lazily.
void EmitGlobal(GlobalDecl D);
- bool TryEmitDefinitionAsAlias(GlobalDecl Alias, GlobalDecl Target,
- bool InEveryTU);
+ bool TryEmitDefinitionAsAlias(GlobalDecl Alias, GlobalDecl Target);
bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D);
/// Set attributes for a global definition.