summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/Sema.cpp
diff options
context:
space:
mode:
authorSunil Srivastava <sunil_srivastava@playstation.sony.com>2017-06-20 22:08:44 +0000
committerSunil Srivastava <sunil_srivastava@playstation.sony.com>2017-06-20 22:08:44 +0000
commit15ed29290643d2ee25e6b2368cda8c594abc6d7b (patch)
tree70a01234f48c026c7d922fff5990c1419490b081 /clang/lib/Sema/Sema.cpp
parent0d93185b2c9eb4339750ec4d4197da2743295606 (diff)
downloadbcm5719-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.cpp3
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());
}
OpenPOWER on IntegriCloud