2 /* { dg-do compile { target int32 } } */
3 /* { dg-options "-O -Wno-shift-overflow" } */
4 /* { dg-additional-options "-std=c++11" { target c++ } } */
6 #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1)
7 #define INTM2 (sizeof (int) * __CHAR_BIT__ - 2)
8 #define LLONGM1 (sizeof (long long) * __CHAR_BIT__ - 1)
9 #define LLONGM2 (sizeof (long long) * __CHAR_BIT__ - 2)
14 int i4
= __INT_MAX__
<< 2;
15 int i5
= __INT_MAX__
<< INTM1
;
18 int i8
= -10 << INTM2
;
19 int i9
= -__INT_MAX__
<< 2;
20 int i10
= -__INT_MAX__
<< INTM1
;
25 int r4
= __INT_MAX__
>> 2;
26 int r5
= __INT_MAX__
>> INTM1
;
29 int r8
= -10 >> INTM2
;
30 int r9
= -__INT_MAX__
>> 2;
31 int r10
= -__INT_MAX__
>> INTM1
;
33 unsigned u1
= 1 << INTM1
;
34 unsigned u2
= 9 << INTM1
;
35 unsigned u3
= 2U << INTM1
;
36 unsigned u4
= 9U << INTM1
;
37 unsigned u5
= 10U << INTM2
;
39 long long int l1
= 1LL << LLONGM1
;
40 long long int l2
= 9LL << LLONGM1
;
41 long long int l3
= 10LL << LLONGM2
;
42 long long int l4
= __LONG_LONG_MAX__
<< 2;
43 long long int l5
= __LONG_LONG_MAX__
<< LLONGM1
;
44 long long int l6
= -1LL << LLONGM1
;
45 long long int l7
= -9LL << LLONGM1
;
46 long long int l8
= -10LL << LLONGM2
;
47 long long int l9
= -__LONG_LONG_MAX__
<< 2;
48 long long int l10
= -__LONG_LONG_MAX__
<< LLONGM1
;
54 const __SIZE_TYPE__ b
= INTM1
;