summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/StmtProfile.cpp
diff options
context:
space:
mode:
authorSaar Raz <saar@raz.email>2020-01-16 13:35:20 +0200
committerSaar Raz <saar@raz.email>2020-01-24 02:28:20 +0200
commit57f70e387e362d988937b6627461d781ecf09e50 (patch)
treeb126849ed6285a11f8857c04a9b750cd2685a282 /clang/lib/AST/StmtProfile.cpp
parentbfaba51f07d1b79ff6e71da106c2b7e153874b1d (diff)
downloadbcm5719-llvm-57f70e387e362d988937b6627461d781ecf09e50.tar.gz
bcm5719-llvm-57f70e387e362d988937b6627461d781ecf09e50.zip
[Concepts] Fix ConceptSpecializationExpr profiling crash
ConceptSpecializationExprs (CSEs) were being created with nullptr TemplateArgsAsWritten during TemplateTemplateParmDecl canonicalization, and we were relying on them during profiling which caused sporadic crashes in test/CXX/.../temp.arg.template/p3-2a.cpp introduced in D44352. Change profiling of CSEs to instead rely on the actual converted template arguments and concept named. (cherry picked from commit 8a3446746098ba29348bb8f85357dd0b466a6d6e)
Diffstat (limited to 'clang/lib/AST/StmtProfile.cpp')
-rw-r--r--clang/lib/AST/StmtProfile.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/AST/StmtProfile.cpp b/clang/lib/AST/StmtProfile.cpp
index 2aa5106e90f..c0b0f3b0b06 100644
--- a/clang/lib/AST/StmtProfile.cpp
+++ b/clang/lib/AST/StmtProfile.cpp
@@ -1335,9 +1335,9 @@ void StmtProfiler::VisitAtomicExpr(const AtomicExpr *S) {
void StmtProfiler::VisitConceptSpecializationExpr(
const ConceptSpecializationExpr *S) {
VisitExpr(S);
- VisitDecl(S->getFoundDecl());
- VisitTemplateArguments(S->getTemplateArgsAsWritten()->getTemplateArgs(),
- S->getTemplateArgsAsWritten()->NumTemplateArgs);
+ VisitDecl(S->getNamedConcept());
+ for (const TemplateArgument &Arg : S->getTemplateArguments())
+ VisitTemplateArgument(Arg);
}
static Stmt::StmtClass DecodeOperatorCall(const CXXOperatorCallExpr *S,
OpenPOWER on IntegriCloud