annotate gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 constexpr int
kono
parents:
diff changeset
4 fn1 (int i, int j)
kono
parents:
diff changeset
5 {
kono
parents:
diff changeset
6 return i << j; // { dg-error "is negative" }
kono
parents:
diff changeset
7 }
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 constexpr int i1 = fn1 (1, -1);
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 constexpr int
kono
parents:
diff changeset
12 fn2 (int i, int j)
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 return i << j; // { dg-error "is >= than the precision of the left operand" }
kono
parents:
diff changeset
15 }
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 constexpr int i2 = fn2 (1, 200);
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 constexpr int
kono
parents:
diff changeset
20 fn3 (int i, int j)
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 return i << j; // { dg-error "is negative" }
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 constexpr int i3 = fn3 (-1, 2);
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 constexpr int
kono
parents:
diff changeset
28 fn4 (int i, int j)
kono
parents:
diff changeset
29 {
kono
parents:
diff changeset
30 return i << j; // { dg-error "overflows" }
kono
parents:
diff changeset
31 }
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 constexpr int i4 = fn4 (__INT_MAX__, 2);
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 constexpr int
kono
parents:
diff changeset
36 fn5 (int i, int j)
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 return i << j;
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 constexpr int i5 = fn5 (__INT_MAX__, 1);
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 constexpr int
kono
parents:
diff changeset
44 fn6 (unsigned int i, unsigned int j)
kono
parents:
diff changeset
45 {
kono
parents:
diff changeset
46 return i << j; // { dg-error "is >= than the precision of the left operand" }
kono
parents:
diff changeset
47 }
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 constexpr int i6 = fn6 (1, -1);
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 constexpr int
kono
parents:
diff changeset
52 fn7 (int i, int j)
kono
parents:
diff changeset
53 {
kono
parents:
diff changeset
54 return i >> j; // { dg-error "is negative" }
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 constexpr int i7 = fn7 (1, -1);
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 constexpr int
kono
parents:
diff changeset
60 fn8 (int i, int j)
kono
parents:
diff changeset
61 {
kono
parents:
diff changeset
62 return i >> j;
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 constexpr int i8 = fn8 (-1, 1);
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 constexpr int
kono
parents:
diff changeset
68 fn9 (int i, int j)
kono
parents:
diff changeset
69 {
kono
parents:
diff changeset
70 return i >> j; // { dg-error "is >= than the precision of the left operand" }
kono
parents:
diff changeset
71 }
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 constexpr int i9 = fn9 (1, 200);