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.
Changing the data structure (DenseSet <= std::unordered_set) seems unrelated to the rest of the patch. If it's necessary / useful, then please do it separately. It'll be important to confirm that the users of MatchedTemplateLocations don't rely on the values having stable addresses.