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