12 #ifndef LLVM_FUZZER_DICTIONARY_H
13 #define LLVM_FUZZER_DICTIONARY_H
28 void Set(
const uint8_t *
B, uint8_t S) {
35 return Size == w.Size && 0 == memcmp(Data, w.Data, Size);
38 bool operator<(const FixedWord<kMaxSize> &w)
const {
41 return memcmp(Data, w.Data, Size) < 0;
45 const uint8_t *
data()
const {
return Data; }
46 uint8_t
size()
const {
return Size; }
50 uint8_t Data[kMaxSize];
62 bool HasPositionHint()
const {
return PositionHint != std::numeric_limits<size_t>::max(); }
81 size_t PositionHint = std::numeric_limits<size_t>::max();
83 size_t SuccessCount = 0;
92 return DE.
GetW() == W;
103 this->DE[Size++] = DE;
106 bool empty()
const {
return Size == 0; }
107 size_t size()
const {
return Size; }
124 #endif // LLVM_FUZZER_DICTIONARY_H
const uint8_t * data() const
bool ParseOneDictionaryEntry(const std::string &Str, Unit *U)
const DictionaryEntry * end() const
size_t GetSuccessCount() const
static GCRegistry::Add< OcamlGC > B("ocaml","ocaml 3.10-compatible GC")
void Printf(const char *Fmt,...)
static PassOptionList PrintAfter("print-after", llvm::cl::desc("Print IR after specified passes"), cl::Hidden)
DictionaryEntry(Word W, size_t PositionHint)
bool HasPositionHint() const
bool ParseDictionaryFile(const std::string &Text, std::vector< Unit > *Units)
bool any_of(R &&Range, UnaryPredicate P)
Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly...
DictionaryEntry & operator[](size_t Idx)
void push_back(DictionaryEntry DE)
void Set(const uint8_t *B, uint8_t S)
static size_t GetMaxSize()
const DictionaryEntry * begin() const
bool ContainsWord(const Word &W) const
FixedWord(const uint8_t *B, uint8_t S)
size_t GetUseCount() const
size_t GetPositionHint() const
static const size_t kMaxDictSize
std::vector< uint8_t > Unit
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
bool operator==(const FixedWord< kMaxSize > &w) const
const Word & GetW() const
void Print(const char *PrintAfter="\n")
static void PrintASCII(const Word &W, const char *PrintAfter)