modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr37780.c (about) 1 /* PR middle-end/37780. */ 2 3 #define VAL (8 * sizeof (int)) 4 5 int __attribute__ ((noinline, noclone)) 6 fooctz (int i) 7 { 8 return (i == 0) ? VAL : __builtin_ctz (i); 9 } 10 11 int __attribute__ ((noinline, noclone)) 12 fooctz2 (int i) 13 { 14 return (i != 0) ? __builtin_ctz (i) : VAL; 15 } 16 17 unsigned int __attribute__ ((noinline, noclone)) 18 fooctz3 (unsigned int i) 19 { 20 return (i > 0) ? __builtin_ctz (i) : VAL; 21 } 22 23 int __attribute__ ((noinline, noclone)) 24 fooclz (int i) 25 { 26 return (i == 0) ? VAL : __builtin_clz (i); 27 } 28 29 int __attribute__ ((noinline, noclone)) 30 fooclz2 (int i) 31 { 32 return (i != 0) ? __builtin_clz (i) : VAL; 33 } 34 35 unsigned int __attribute__ ((noinline, noclone)) 36 fooclz3 (unsigned int i) 37 { 38 return (i > 0) ? __builtin_clz (i) : VAL; 39 } 40 41 int 42 main (void) 43 { 44 if (fooctz (0) != VAL || fooctz2 (0) != VAL || fooctz3 (0) != VAL 45 || fooclz (0) != VAL || fooclz2 (0) != VAL || fooclz3 (0) != VAL) 46 __builtin_abort (); 47 48 return 0; 49 }