diff options
author | Sunil Srivastava <sunil_srivastava@playstation.sony.com> | 2017-06-20 22:08:44 +0000 |
---|---|---|
committer | Sunil Srivastava <sunil_srivastava@playstation.sony.com> | 2017-06-20 22:08:44 +0000 |
commit | 15ed29290643d2ee25e6b2368cda8c594abc6d7b (patch) | |
tree | 70a01234f48c026c7d922fff5990c1419490b081 /clang/lib/Sema/Sema.cpp | |
parent | 0d93185b2c9eb4339750ec4d4197da2743295606 (diff) | |
download | bcm5719-llvm-15ed29290643d2ee25e6b2368cda8c594abc6d7b.tar.gz bcm5719-llvm-15ed29290643d2ee25e6b2368cda8c594abc6d7b.zip |
Prevent devirtualization of calls to un-instantiated functions.
PR 27895
Differential Revision: https://reviews.llvm.org/D22057
llvm-svn: 305862
Diffstat (limited to 'clang/lib/Sema/Sema.cpp')
-rw-r--r-- | clang/lib/Sema/Sema.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index e7b0914641f..007a5e483e6 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -740,6 +740,9 @@ void Sema::ActOnEndOfTranslationUnit() { // Load pending instantiations from the external source. SmallVector<PendingImplicitInstantiation, 4> Pending; ExternalSource->ReadPendingInstantiations(Pending); + for (auto PII : Pending) + if (auto Func = dyn_cast<FunctionDecl>(PII.first)) + Func->setInstantiationIsPending(true); PendingInstantiations.insert(PendingInstantiations.begin(), Pending.begin(), Pending.end()); } |