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