modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr80421.c (about) 1 /* PR middle-end/80421 */ 2 3 __attribute__ ((noinline, noclone)) void 4 baz (const char *t, ...) 5 { 6 asm volatile (""::"r" (t):"memory"); 7 if (*t == 'T') 8 __builtin_abort (); 9 } 10 11 unsigned int 12 foo (char x) 13 { 14 baz ("x %c\n", x); 15 switch (x) 16 { 17 default: 18 baz ("case default\n"); 19 if (x == 'D' || x == 'I') 20 baz ("This should never be reached.\n"); 21 return 0; 22 case 'D': 23 baz ("case 'D'\n"); 24 return 0; 25 case 'I': 26 baz ("case 'I'\n"); 27 return 0; 28 } 29 } 30 31 void 32 bar (void) 33 { 34 int a = 2; 35 int b = 5; 36 char c[] = { 37 2, 4, 1, 2, 5, 5, 2, 4, 4, 0, 0, 0, 0, 0, 0, 3, 4, 4, 2, 4, 38 1, 2, 5, 5, 2, 4, 1, 0, 0, 0, 2, 4, 4, 3, 4, 3, 3, 5, 1, 3, 39 5, 5, 2, 4, 4, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 4, 4, 40 2, 4, 2, 3, 5, 1, 3, 5, 1, 3, 5, 5, 2, 4, 1, 2, 4, 2, 3, 5, 41 3, 3, 5, 1, 3, 5, 5, 2, 4, 1, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 42 5, 5, 2, 4, 4, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 4, 1, 43 2, 4, 2, 3, 5, 1, 3, 5, 1, 3, 5, 1, 2, 4, 1, 2, 4, 1, 3, 5, 44 1, 3, 5, 1, 3, 5, 1, 2, 4, 4, 2, 4, 1, 3, 5, 1, 3, 5, 1, 3, 45 5, 5, 2, 4, 4, 2, 4, 2, 3, 5, 3, 3, 5, 1, 3, 5, 5, 2, 4, 4, 46 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 5, 5, 2, 4, 2, 3, 5, 47 1, 3, 4, 1, 3, 5, 1, 2, 5, 5, 2, 4, 1, 2, 5, 1, 3, 5, 3, 3, 48 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 1, 49 2, 4, 1, 2, 5, 2, 3, 5, 1, 3, 5, 1, 2, 5, 1, 2, 4, 2, 2, 5, 50 1, 3, 5, 1, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3, 51 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3, 5, 1, 2, 5, 5, 52 2, 4, 2, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 53 1, 3, 5, 3, 3, 5, 1, 2, 5, 1, 2, 4, 1, 2, 5, 2, 3, 5, 1, 3, 54 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3, 5, 1, 2, 5, 5, 55 2, 4, 1, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 56 1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 1, 3, 5, 3, 3, 57 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 58 }; 59 char *f = c + 390; 60 int i, j, e, g, h; 61 char k, l; 62 i = 26; 63 j = 25; 64 k = l = 'M'; 65 h = 2; 66 while (i > 0) 67 { 68 int x = i - a; 69 x = x > 0 ? x : 0; 70 x = j - x; 71 g = x * 3 + h; 72 switch (f[g]) 73 { 74 case 1: 75 --i; 76 --j; 77 h = 2; 78 f -= b * 3; 79 k = 'M'; 80 break; 81 case 2: 82 --i; 83 h = 0; 84 f -= b * 3; 85 k = 'I'; 86 break; 87 case 3: 88 --i; 89 h = 2; 90 f -= b * 3; 91 k = 'I'; 92 break; 93 case 4: 94 --j; 95 h = 1; 96 k = 'D'; 97 break; 98 case 5: 99 --j; 100 h = 2; 101 k = 'D'; 102 break; 103 } 104 if (k == l) 105 ++e; 106 else 107 { 108 foo (l); 109 l = k; 110 } 111 } 112 } 113 114 int 115 main () 116 { 117 char l = 'D'; 118 foo (l); 119 bar (); 120 return 0; 121 }