diff options
author | Mikhail Maltsev <mikhail.maltsev@arm.com> | 2020-10-20 16:21:38 +0100 |
---|---|---|
committer | Mikhail Maltsev <mikhail.maltsev@arm.com> | 2020-10-20 16:24:09 +0100 |
commit | 781941183700b52d11b27227e3341385447610fa (patch) | |
tree | 5dec0334d46c225f0ee46575e4ecc39710d85c90 /clang/lib/Tooling/Syntax | |
parent | c76cdeac93380b434349738d96f83d3ffda9869c (diff) | |
download | llvm-781941183700b52d11b27227e3341385447610fa.zip llvm-781941183700b52d11b27227e3341385447610fa.tar.gz llvm-781941183700b52d11b27227e3341385447610fa.tar.bz2 |
[clang] Use SourceLocation as key in hash maps, NFCI
The patch adjusts the existing `llvm::DenseMap<unsigned, T>` and
`llvm::DenseSet<unsigned>` objects that store source locations, so
that they use `SourceLocation` directly instead of `unsigned`.
This patch relies on the `DenseMapInfo` trait added in D89719.
It also replaces the construction of `SourceLocation` objects from
the constants -1 and -2 with calls to the trait's methods `getEmptyKey`
and `getTombstoneKey` where appropriate.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D69840
Diffstat (limited to 'clang/lib/Tooling/Syntax')
-rw-r--r-- | clang/lib/Tooling/Syntax/BuildTree.cpp | 7 | ||||
-rw-r--r-- | clang/lib/Tooling/Syntax/Tokens.cpp | 10 |
2 files changed, 8 insertions, 9 deletions
diff --git a/clang/lib/Tooling/Syntax/BuildTree.cpp b/clang/lib/Tooling/Syntax/BuildTree.cpp index e1ed55f..1975905 100644 --- a/clang/lib/Tooling/Syntax/BuildTree.cpp +++ b/clang/lib/Tooling/Syntax/BuildTree.cpp @@ -367,7 +367,7 @@ class syntax::TreeBuilder { public: TreeBuilder(syntax::Arena &Arena) : Arena(Arena), Pending(Arena) { for (const auto &T : Arena.getTokenBuffer().expandedTokens()) - LocationToToken.insert({T.location().getRawEncoding(), &T}); + LocationToToken.insert({T.location(), &T}); } llvm::BumpPtrAllocator &allocator() { return Arena.getAllocator(); } @@ -689,8 +689,7 @@ private: syntax::Arena &Arena; /// To quickly find tokens by their start location. - llvm::DenseMap</*SourceLocation*/ unsigned, const syntax::Token *> - LocationToToken; + llvm::DenseMap<SourceLocation, const syntax::Token *> LocationToToken; Forest Pending; llvm::DenseSet<Decl *> DeclsWithoutSemicolons; ASTToSyntaxMapping Mapping; @@ -1708,7 +1707,7 @@ void syntax::TreeBuilder::markExprChild(Expr *Child, NodeRole Role) { const syntax::Token *syntax::TreeBuilder::findToken(SourceLocation L) const { if (L.isInvalid()) return nullptr; - auto It = LocationToToken.find(L.getRawEncoding()); + auto It = LocationToToken.find(L); assert(It != LocationToToken.end()); return It->second; } diff --git a/clang/lib/Tooling/Syntax/Tokens.cpp b/clang/lib/Tooling/Syntax/Tokens.cpp index a83cc2d..234df9c 100644 --- a/clang/lib/Tooling/Syntax/Tokens.cpp +++ b/clang/lib/Tooling/Syntax/Tokens.cpp @@ -575,11 +575,11 @@ public: // A's startpoint. if (!Range.getBegin().isFileID()) { Range.setBegin(SM.getExpansionLoc(Range.getBegin())); - assert(Collector->Expansions.count(Range.getBegin().getRawEncoding()) && + assert(Collector->Expansions.count(Range.getBegin()) && "Overlapping macros should have same expansion location"); } - Collector->Expansions[Range.getBegin().getRawEncoding()] = Range.getEnd(); + Collector->Expansions[Range.getBegin()] = Range.getEnd(); LastExpansionEnd = Range.getEnd(); } // FIXME: handle directives like #pragma, #include, etc. @@ -711,8 +711,8 @@ private: // If we know mapping bounds at [NextSpelled, KnownEnd] (macro expansion) // then we want to partition our (empty) mapping. // [Start, NextSpelled) [NextSpelled, KnownEnd] (KnownEnd, Target) - SourceLocation KnownEnd = CollectedExpansions.lookup( - SpelledTokens[NextSpelled].location().getRawEncoding()); + SourceLocation KnownEnd = + CollectedExpansions.lookup(SpelledTokens[NextSpelled].location()); if (KnownEnd.isValid()) { FlushMapping(); // Emits [Start, NextSpelled) while (NextSpelled < SpelledTokens.size() && @@ -749,7 +749,7 @@ private: // We need no mapping for file tokens copied to the expanded stream. } else { // We found a new macro expansion. We should have its spelling bounds. - auto End = CollectedExpansions.lookup(Expansion.getRawEncoding()); + auto End = CollectedExpansions.lookup(Expansion); assert(End.isValid() && "Macro expansion wasn't captured?"); // Mapping starts here... |