/* PR middle-end/37780. */ #define VAL (8 * sizeof (int)) int __attribute__ ((noinline, noclone)) fooctz (int i) { return (i == 0) ? VAL : __builtin_ctz (i); } int __attribute__ ((noinline, noclone)) fooctz2 (int i) { return (i != 0) ? __builtin_ctz (i) : VAL; } unsigned int __attribute__ ((noinline, noclone)) fooctz3 (unsigned int i) { return (i > 0) ? __builtin_ctz (i) : VAL; } int __attribute__ ((noinline, noclone)) fooclz (int i) { return (i == 0) ? VAL : __builtin_clz (i); } int __attribute__ ((noinline, noclone)) fooclz2 (int i) { return (i != 0) ? __builtin_clz (i) : VAL; } unsigned int __attribute__ ((noinline, noclone)) fooclz3 (unsigned int i) { return (i > 0) ? __builtin_clz (i) : VAL; } int main (void) { if (fooctz (0) != VAL || fooctz2 (0) != VAL || fooctz3 (0) != VAL || fooclz (0) != VAL || fooclz2 (0) != VAL || fooclz3 (0) != VAL) __builtin_abort (); return 0; }