modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr51933.c (about) 1 /* PR rtl-optimization/51933 */ 2 3 static signed char v1; 4 static unsigned char v2[256], v3[256]; 5 6 __attribute__((noclone, noinline)) void 7 foo (void) 8 { 9 #if defined(__s390__) && !defined(__zarch__) 10 /* S/390 31 bit cannot deal with more than one literal pool 11 reference per insn. */ 12 asm volatile ("" : : "g" (&v1) : "memory"); 13 asm volatile ("" : : "g" (&v2[0])); 14 asm volatile ("" : : "g" (&v3[0])); 15 #else 16 asm volatile ("" : : "g" (&v1), "g" (&v2[0]), "g" (&v3[0]) : "memory"); 17 #endif 18 } 19 20 __attribute__((noclone, noinline)) int 21 bar (const int x, const unsigned short *y, char *z) 22 { 23 int i; 24 unsigned short u; 25 if (!v1) 26 foo (); 27 for (i = 0; i < x; i++) 28 { 29 u = y[i]; 30 z[i] = u < 0x0100 ? v2[u] : v3[u & 0xff]; 31 } 32 z[x] = '\0'; 33 return x; 34 } 35 36 int 37 main (void) 38 { 39 char buf[18]; 40 unsigned short s[18]; 41 unsigned char c[18] = "abcdefghijklmnopq"; 42 int i; 43 for (i = 0; i < 256; i++) 44 { 45 v2[i] = i; 46 v3[i] = i + 1; 47 } 48 for (i = 0; i < 18; i++) 49 s[i] = c[i]; 50 s[5] |= 0x600; 51 s[6] |= 0x500; 52 s[11] |= 0x2000; 53 s[15] |= 0x500; 54 foo (); 55 if (bar (17, s, buf) != 17 56 || __builtin_memcmp (buf, "abcdeghhijkmmnoqq", 18) != 0) 57 __builtin_abort (); 58 return 0; 59 }