/// omitted to search the empty category.
bool isIn(const Module &M, const StringRef Category = StringRef()) const;
- /// Returns whether either this function or its source file are listed in any
- /// category. Category will contain the name of an arbitrary category in
- /// which this function is listed.
- bool findCategory(const Function &F, StringRef &Category) const;
-
- /// Returns whether this global, its type or its source file are listed in any
- /// category. Category will contain the name of an arbitrary category in
- /// which this global is listed.
- bool findCategory(const GlobalVariable &G, StringRef &Category) const;
-
- /// Returns whether this module is listed in any category. Category will
- /// contain the name of an arbitrary category in which this module is listed.
- bool findCategory(const Module &M, StringRef &Category) const;
-
private:
SpecialCaseList(SpecialCaseList const &) LLVM_DELETED_FUNCTION;
SpecialCaseList &operator=(SpecialCaseList const &) LLVM_DELETED_FUNCTION;
/// Parses just-constructed SpecialCaseList entries from a memory buffer.
bool parse(const MemoryBuffer *MB, std::string &Error);
- bool findCategory(const StringRef Section, const StringRef Query,
- StringRef &Category) const;
bool inSectionCategory(const StringRef Section, const StringRef Query,
const StringRef Category) const;
};
}
}
-bool SpecialCaseList::findCategory(const Function &F,
- StringRef &Category) const {
- return findCategory(*F.getParent(), Category) ||
- findCategory("fun", F.getName(), Category);
-}
-
bool SpecialCaseList::isIn(const Function& F, const StringRef Category) const {
return isIn(*F.getParent(), Category) ||
inSectionCategory("fun", F.getName(), Category);
return "<unknown type>";
}
-bool SpecialCaseList::findCategory(const GlobalVariable &G,
- StringRef &Category) const {
- return findCategory(*G.getParent(), Category) ||
- findCategory("global", G.getName(), Category) ||
- findCategory("type", GetGVTypeString(G), Category);
-}
-
bool SpecialCaseList::isIn(const GlobalVariable &G,
const StringRef Category) const {
return isIn(*G.getParent(), Category) ||
inSectionCategory("type", GetGVTypeString(G), Category);
}
-bool SpecialCaseList::findCategory(const Module &M, StringRef &Category) const {
- return findCategory("src", M.getModuleIdentifier(), Category);
-}
-
bool SpecialCaseList::isIn(const Module &M, const StringRef Category) const {
return inSectionCategory("src", M.getModuleIdentifier(), Category);
}
-bool SpecialCaseList::findCategory(const StringRef Section,
- const StringRef Query,
- StringRef &Category) const {
- StringMap<StringMap<Entry> >::const_iterator I = Entries.find(Section);
- if (I == Entries.end()) return false;
-
- for (StringMap<Entry>::const_iterator II = I->second.begin(),
- IE = I->second.end();
- II != IE; ++II) {
- if (II->getValue().match(Query)) {
- Category = II->first();
- return true;
- }
- }
-
- return false;
-}
-
bool SpecialCaseList::inSectionCategory(const StringRef Section,
const StringRef Query,
const StringRef Category) const {