diff options
author | Richard Trieu <rtrieu@google.com> | 2017-03-04 00:08:58 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2017-03-04 00:08:58 +0000 |
commit | 583e2c175a241dc39dfc28acda8a38514286950e (patch) | |
tree | f87bdaf5f526f144e8db1b25aca6f9ad0676bff1 /clang/lib/AST/ODRHash.cpp | |
parent | 71c1958fca2852cd418f89250547861b7c9bb016 (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.cpp | 11 |
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); } }; |