aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-07-28 15:32:17 +0000
committerDouglas Gregor <dgregor@apple.com>2009-07-28 15:32:17 +0000
commitd584eb25189a545d20eb196273f1f85f9a17f92a (patch)
tree66bad0e35c3d83231a8242b3ca3e3bbdf150b8c5
parent3fe81fc59ce984e968e9dc91b232cc2740a74aa0 (diff)
Profiling the pointer of a canonical type is sufficient to uniquely identify the type
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77321 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AST/StmtProfile.cpp33
1 files changed, 13 insertions, 20 deletions
diff --git a/lib/AST/StmtProfile.cpp b/lib/AST/StmtProfile.cpp
index fe8d1b716b..af2b934125 100644
--- a/lib/AST/StmtProfile.cpp
+++ b/lib/AST/StmtProfile.cpp
@@ -272,21 +272,6 @@ void StmtProfiler::VisitCompoundLiteralExpr(CompoundLiteralExpr *S) {
ID.AddBoolean(S->isFileScope());
}
-void StmtProfiler::VisitDecl(Decl *D) {
- if (Canonical) {
- if (NonTypeTemplateParmDecl *NTTP
- = dyn_cast_or_null<NonTypeTemplateParmDecl>(D)) {
- ID.AddInteger(NTTP->getDepth());
- ID.AddInteger(NTTP->getIndex());
- return;
- }
-
- // FIXME: Other template template parameters?
- }
-
- ID.AddPointer(D? D->getCanonicalDecl() : 0);
-}
-
void StmtProfiler::VisitCastExpr(CastExpr *S) {
VisitExpr(S);
}
@@ -604,17 +589,25 @@ void StmtProfiler::VisitObjCIsaExpr(ObjCIsaExpr *S) {
ID.AddBoolean(S->isArrow());
}
-void StmtProfiler::VisitType(QualType T) {
+void StmtProfiler::VisitDecl(Decl *D) {
if (Canonical) {
- if (const TemplateTypeParmType *TTP = T->getAs<TemplateTypeParmType>()) {
- ID.AddInteger(TTP->getDepth());
- ID.AddInteger(TTP->getIndex());
+ if (NonTypeTemplateParmDecl *NTTP
+ = dyn_cast_or_null<NonTypeTemplateParmDecl>(D)) {
+ ID.AddInteger(NTTP->getDepth());
+ ID.AddInteger(NTTP->getIndex());
return;
}
- T = Context.getCanonicalType(T);
+ // FIXME: Template template parameters?
}
+ ID.AddPointer(D? D->getCanonicalDecl() : 0);
+}
+
+void StmtProfiler::VisitType(QualType T) {
+ if (Canonical)
+ T = Context.getCanonicalType(T);
+
ID.AddPointer(T.getAsOpaquePtr());
}