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

     1  /* { dg-options "-fno-ira-share-spill-slots -Wno-shift-overflow" } */
     2  
     3  extern void abort (void);
     4  extern void exit (int);
     5  
     6  #define CHAR_BIT 8
     7  
     8  #define ROR(a,b) (((a) >> (b)) | ((a) << ((sizeof (a) * CHAR_BIT) - (b))))
     9  #define ROL(a,b) (((a) << (b)) | ((a) >> ((sizeof (a) * CHAR_BIT) - (b))))
    10  
    11  #define CHAR_VALUE ((char)0xf234)
    12  #define SHORT_VALUE ((short)0xf234)
    13  #define INT_VALUE ((int)0xf234)
    14  #define LONG_VALUE ((long)0xf2345678L)
    15  #define LL_VALUE ((long long)0xf2345678abcdef0LL)
    16  
    17  #define SHIFT1 4
    18  #define SHIFT2 ((sizeof (long long) * CHAR_BIT) - SHIFT1)
    19  
    20  char c = CHAR_VALUE;
    21  short s = SHORT_VALUE;
    22  int i = INT_VALUE;
    23  long l = LONG_VALUE;
    24  long long ll = LL_VALUE;
    25  int shift1 = SHIFT1;
    26  int shift2 = SHIFT2;
    27  
    28  int
    29  main ()
    30  {
    31    if (ROR (c, shift1) != ROR (CHAR_VALUE, SHIFT1))
    32      abort ();
    33  
    34    if (ROR (c, SHIFT1) != ROR (CHAR_VALUE, SHIFT1))
    35      abort ();
    36  
    37    if (ROR (s, shift1) != ROR (SHORT_VALUE, SHIFT1))
    38      abort ();
    39  
    40    if (ROR (s, SHIFT1) != ROR (SHORT_VALUE, SHIFT1))
    41      abort ();
    42  
    43    if (ROR (i, shift1) != ROR (INT_VALUE, SHIFT1))
    44      abort ();
    45  
    46    if (ROR (i, SHIFT1) != ROR (INT_VALUE, SHIFT1))
    47      abort ();
    48  
    49    if (ROR (l, shift1) != ROR (LONG_VALUE, SHIFT1))
    50      abort ();
    51  
    52    if (ROR (l, SHIFT1) != ROR (LONG_VALUE, SHIFT1))
    53      abort ();
    54  
    55    if (ROR (ll, shift1) != ROR (LL_VALUE, SHIFT1))
    56      abort ();
    57  
    58    if (ROR (ll, SHIFT1) != ROR (LL_VALUE, SHIFT1))
    59      abort ();
    60  
    61    if (ROR (ll, shift2) != ROR (LL_VALUE, SHIFT2))
    62      abort ();
    63  
    64    if (ROR (ll, SHIFT2) != ROR (LL_VALUE, SHIFT2))
    65      abort ();
    66  
    67    if (ROL (c, shift1) != ROL (CHAR_VALUE, SHIFT1))
    68      abort ();
    69  
    70    if (ROL (c, SHIFT1) != ROL (CHAR_VALUE, SHIFT1))
    71      abort ();
    72  
    73    if (ROL (s, shift1) != ROL (SHORT_VALUE, SHIFT1))
    74      abort ();
    75  
    76    if (ROL (s, SHIFT1) != ROL (SHORT_VALUE, SHIFT1))
    77      abort ();
    78  
    79    if (ROL (i, shift1) != ROL (INT_VALUE, SHIFT1))
    80      abort ();
    81  
    82    if (ROL (i, SHIFT1) != ROL (INT_VALUE, SHIFT1))
    83      abort ();
    84  
    85    if (ROL (l, shift1) != ROL (LONG_VALUE, SHIFT1))
    86      abort ();
    87  
    88    if (ROL (l, SHIFT1) != ROL (LONG_VALUE, SHIFT1))
    89      abort ();
    90  
    91    if (ROL (ll, shift1) != ROL (LL_VALUE, SHIFT1))
    92      abort ();
    93  
    94    if (ROL (ll, SHIFT1) != ROL (LL_VALUE, SHIFT1))
    95      abort ();
    96  
    97    if (ROL (ll, shift2) != ROL (LL_VALUE, SHIFT2))
    98      abort ();
    99  
   100    if (ROL (ll, SHIFT2) != ROL (LL_VALUE, SHIFT2))
   101      abort ();
   102  
   103    exit (0);
   104  }