Teach SanitizerBlacklist to blacklist by SourceLocation. NFC.

llvm-svn: 219993
diff --git a/clang/lib/Basic/SanitizerBlacklist.cpp b/clang/lib/Basic/SanitizerBlacklist.cpp
index 84ec210..f022133 100644
--- a/clang/lib/Basic/SanitizerBlacklist.cpp
+++ b/clang/lib/Basic/SanitizerBlacklist.cpp
@@ -29,8 +29,9 @@
   return "<unknown type>";
 }
 
-SanitizerBlacklist::SanitizerBlacklist(const std::string &BlacklistPath)
-    : SCL(llvm::SpecialCaseList::createOrDie(BlacklistPath)) {}
+SanitizerBlacklist::SanitizerBlacklist(StringRef BlacklistPath,
+                                       SourceManager &SM)
+    : SCL(llvm::SpecialCaseList::createOrDie(BlacklistPath)), SM(SM) {}
 
 bool SanitizerBlacklist::isIn(const llvm::Function &F) const {
   return isBlacklistedFile(F.getParent()->getModuleIdentifier()) ||
@@ -57,3 +58,9 @@
                                            StringRef Category) const {
   return SCL->inSection("src", FileName, Category);
 }
+
+bool SanitizerBlacklist::isBlacklistedLocation(SourceLocation Loc,
+                                               StringRef Category) const {
+  return !Loc.isInvalid() && isBlacklistedFile(SM.getFilename(Loc), Category);
+}
+