diff options
Diffstat (limited to 'lib/Fuzzer/test/LargeTest.cpp')
| -rw-r--r-- | lib/Fuzzer/test/LargeTest.cpp | 37 | 
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/Fuzzer/test/LargeTest.cpp b/lib/Fuzzer/test/LargeTest.cpp new file mode 100644 index 000000000000..83ed61971801 --- /dev/null +++ b/lib/Fuzzer/test/LargeTest.cpp @@ -0,0 +1,37 @@ +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. + +// A fuzz target with lots of edges. +#include <cstdint> +#include <cstdlib> + +static inline void break_optimization(const void *arg) { +    __asm__ __volatile__("" : : "r" (arg) : "memory"); +} + +#define A                                         \ +  do {                                            \ +    i++;                                          \ +    c++;                                          \ +    if (Data[(i + __LINE__) % Size] == (c % 256)) \ +      break_optimization(Data);                   \ +    else                                          \ +      break_optimization(0);                      \ +  } while (0) + +// for (int i = 0, n = Data[(__LINE__ - 1) % Size] % 16; i < n; i++) + +#define B do{A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; }while(0) +#define C do{B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; }while(0) +#define D do{C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; }while(0) +#define E do{D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; }while(0) + +volatile int sink; +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { +  if (!Size) return 0; +  int c = 0; +  int i = 0; +  D; +  return 0; +} +  | 
