mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-26 07:24:25 +00:00
Introduce factory methods for SpecialCaseList
Summary: Doing work in constructors is bad: this change suggests to call SpecialCaseList::create(Path, Error) instead of "new SpecialCaseList(Path)". Currently the latter may crash with report_fatal_error, which is undesirable - sometimes we want to report the error to user gracefully - for example, if he provides an incorrect file as an argument of Clang's -fsanitize-blacklist flag. Reviewers: pcc Reviewed By: pcc CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1327 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188156 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -57,8 +57,18 @@ class StringRef;
|
||||
|
||||
class SpecialCaseList {
|
||||
public:
|
||||
// FIXME: Switch all users to factories and remove these constructors.
|
||||
SpecialCaseList(const StringRef Path);
|
||||
SpecialCaseList(const MemoryBuffer *MB);
|
||||
|
||||
/// Parses the special case list from a file. If Path is empty, returns
|
||||
/// an empty special case list. On failure, returns 0 and writes an error
|
||||
/// message to string.
|
||||
static SpecialCaseList *create(const StringRef Path, std::string &Error);
|
||||
/// Parses the special case list from a memory buffer. On failure, returns
|
||||
/// 0 and writes an error message to string.
|
||||
static SpecialCaseList *create(const MemoryBuffer *MB, std::string &Error);
|
||||
|
||||
~SpecialCaseList();
|
||||
|
||||
/// Returns whether either this function or its source file are listed in the
|
||||
@ -89,10 +99,16 @@ class SpecialCaseList {
|
||||
bool findCategory(const Module &M, StringRef &Category) const;
|
||||
|
||||
private:
|
||||
SpecialCaseList(SpecialCaseList const &) LLVM_DELETED_FUNCTION;
|
||||
SpecialCaseList &operator=(SpecialCaseList const &) LLVM_DELETED_FUNCTION;
|
||||
|
||||
struct Entry;
|
||||
StringMap<StringMap<Entry> > Entries;
|
||||
|
||||
void init(const MemoryBuffer *MB);
|
||||
SpecialCaseList();
|
||||
/// 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,
|
||||
|
Reference in New Issue
Block a user