(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
pr37780.c
       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  }