17#include "llvm/ADT/StringExtras.h"
42 if (isa<ObjCMethodDecl, CXXMethodDecl>(
D))
44 if (isa<BlockDecl>(
D))
45 return "anonymous block";
59 size_t start = BName.find(Name);
60 if (start != StringRef::npos) {
62 if (BName.size() == Name.size())
70 const auto MatchPredecessor = [=]() ->
bool {
71 return start <= 0 || !llvm::isAlpha(BName[start - 1]);
73 const auto MatchSuccessor = [=]() ->
bool {
74 std::size_t LookbehindPlace = start + Name.size();
75 return LookbehindPlace >= BName.size() ||
76 !llvm::isAlpha(BName[LookbehindPlace]);
79 if (MatchPredecessor() && MatchSuccessor())
106 StringRef FName = II->
getName();
110 if (FName.starts_with(
"__inline") && FName.contains(Name))
122 auto CompletelyMatchesParts = [II](
auto... Parts) ->
bool {
123 StringRef FName = II->
getName();
124 return (FName.consume_front(Parts) && ...) && FName.empty();
127 return CompletelyMatchesParts(
"__", Name,
"_chk") ||
128 CompletelyMatchesParts(
"__builtin_",
"__", Name,
"_chk");
145 if (!isa<NonLoc>(LHSVal)) {