1 /* PR middle-end/37780. */ 2 3 #define VAL (8 * sizeof (int)) 4 5 int __attribute__ ((noinline, noclone)) fooctz(int i)6fooctz (int i) 7 { 8 return (i == 0) ? VAL : __builtin_ctz (i); 9 } 10 11 int __attribute__ ((noinline, noclone)) fooctz2(int i)12fooctz2 (int i) 13 { 14 return (i != 0) ? __builtin_ctz (i) : VAL; 15 } 16 17 unsigned int __attribute__ ((noinline, noclone)) fooctz3(unsigned int i)18fooctz3 (unsigned int i) 19 { 20 return (i > 0) ? __builtin_ctz (i) : VAL; 21 } 22 23 int __attribute__ ((noinline, noclone)) fooclz(int i)24fooclz (int i) 25 { 26 return (i == 0) ? VAL : __builtin_clz (i); 27 } 28 29 int __attribute__ ((noinline, noclone)) fooclz2(int i)30fooclz2 (int i) 31 { 32 return (i != 0) ? __builtin_clz (i) : VAL; 33 } 34 35 unsigned int __attribute__ ((noinline, noclone)) fooclz3(unsigned int i)36fooclz3 (unsigned int i) 37 { 38 return (i > 0) ? __builtin_clz (i) : VAL; 39 } 40 41 int main(void)42main (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 }