modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/ffs-2.c (about)

     1  struct
     2    {
     3      int input;
     4      int output;
     5    }
     6  ffstesttab[] =
     7    {
     8  #if __INT_MAX__ >= 2147483647
     9      /* at least 32-bit integers */
    10      { 0x80000000, 32 },
    11      { 0xa5a5a5a5, 1 },
    12      { 0x5a5a5a5a, 2 },
    13      { 0xcafe0000, 18 },
    14  #endif
    15  #if __INT_MAX__ >= 32767
    16      /* at least 16-bit integers */
    17      { 0x8000, 16 },
    18      { 0xa5a5, 1 },
    19      { 0x5a5a, 2 },
    20      { 0x0ca0, 6 },
    21  #endif
    22  #if __INT_MAX__ < 32767
    23  #error integers are too small
    24  #endif
    25    };
    26  
    27  #define NFFSTESTS (sizeof (ffstesttab) / sizeof (ffstesttab[0]))
    28  
    29  extern void abort (void);
    30  extern void exit (int);
    31  
    32  int
    33  main (void)
    34  {
    35    int i;
    36  
    37    for (i = 0; i < NFFSTESTS; i++)
    38      {
    39        if (__builtin_ffs (ffstesttab[i].input) != ffstesttab[i].output)
    40  	abort ();
    41      }
    42  
    43    exit (0);
    44  }