12946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 22946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 32946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 410ab2aceSGeorge Karpenkov 510ab2aceSGeorge Karpenkov // A fuzz target with lots of edges. 610ab2aceSGeorge Karpenkov #include <cstdint> 710ab2aceSGeorge Karpenkov #include <cstdlib> 810ab2aceSGeorge Karpenkov break_optimization(const void * arg)910ab2aceSGeorge Karpenkovstatic inline void break_optimization(const void *arg) { 1010ab2aceSGeorge Karpenkov __asm__ __volatile__("" : : "r" (arg) : "memory"); 1110ab2aceSGeorge Karpenkov } 1210ab2aceSGeorge Karpenkov 1310ab2aceSGeorge Karpenkov #define A \ 1410ab2aceSGeorge Karpenkov do { \ 1510ab2aceSGeorge Karpenkov i++; \ 1610ab2aceSGeorge Karpenkov c++; \ 1710ab2aceSGeorge Karpenkov if (Data[(i + __LINE__) % Size] == (c % 256)) \ 1810ab2aceSGeorge Karpenkov break_optimization(Data); \ 1910ab2aceSGeorge Karpenkov else \ 2010ab2aceSGeorge Karpenkov break_optimization(0); \ 2110ab2aceSGeorge Karpenkov } while (0) 2210ab2aceSGeorge Karpenkov 2310ab2aceSGeorge Karpenkov // for (int i = 0, n = Data[(__LINE__ - 1) % Size] % 16; i < n; i++) 2410ab2aceSGeorge Karpenkov 2510ab2aceSGeorge Karpenkov #define B do{A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; }while(0) 2610ab2aceSGeorge Karpenkov #define C do{B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; }while(0) 27*ddfc84e6SNikita Popov #define D do{C; C; C; C; C; C; C; C; C; }while(0) 2810ab2aceSGeorge Karpenkov 2910ab2aceSGeorge Karpenkov volatile int sink; LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)3010ab2aceSGeorge Karpenkovextern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 3110ab2aceSGeorge Karpenkov if (!Size) return 0; 3210ab2aceSGeorge Karpenkov int c = 0; 3310ab2aceSGeorge Karpenkov int i = 0; 3410ab2aceSGeorge Karpenkov D; 3510ab2aceSGeorge Karpenkov return 0; 3610ab2aceSGeorge Karpenkov } 3710ab2aceSGeorge Karpenkov 38