summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ODRHash.cpp
diff options
context:
space:
mode:
authorRichard Trieu <rtrieu@google.com>2017-03-04 00:08:58 +0000
committerRichard Trieu <rtrieu@google.com>2017-03-04 00:08:58 +0000
commit583e2c175a241dc39dfc28acda8a38514286950e (patch)
treef87bdaf5f526f144e8db1b25aca6f9ad0676bff1 /clang/lib/AST/ODRHash.cpp
parent71c1958fca2852cd418f89250547861b7c9bb016 (diff)
[ODRHash] Add support for detecting different method properties.
Now print diagnostics for static, virtual, inline, volatile, and const differences in methods. Also use DeclarationName instead of IdentifierInfo for additional robustness in diagnostic printing. llvm-svn: 296932
Diffstat (limited to 'clang/lib/AST/ODRHash.cpp')
-rw-r--r--clang/lib/AST/ODRHash.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/AST/ODRHash.cpp b/clang/lib/AST/ODRHash.cpp
index 78a3eeca034d..a0b870f4dacc 100644
--- a/clang/lib/AST/ODRHash.cpp
+++ b/clang/lib/AST/ODRHash.cpp
@@ -160,7 +160,7 @@ public:
}
void VisitNamedDecl(const NamedDecl *D) {
- AddIdentifierInfo(D->getIdentifier());
+ Hash.AddDeclarationName(D->getDeclName());
Inherited::VisitNamedDecl(D);
}
@@ -196,10 +196,19 @@ public:
}
void VisitFunctionDecl(const FunctionDecl *D) {
+ ID.AddInteger(D->getStorageClass());
+ Hash.AddBoolean(D->isInlineSpecified());
+ Hash.AddBoolean(D->isVirtualAsWritten());
+ Hash.AddBoolean(D->isPure());
+ Hash.AddBoolean(D->isDeletedAsWritten());
+
Inherited::VisitFunctionDecl(D);
}
void VisitCXXMethodDecl(const CXXMethodDecl *D) {
+ Hash.AddBoolean(D->isConst());
+ Hash.AddBoolean(D->isVolatile());
+
Inherited::VisitCXXMethodDecl(D);
}
};