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  }