annotate gcc/testsuite/g++.dg/cpp1z/inline-var3.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do compile }
kono
parents:
diff changeset
2 // { dg-options "-g0" }
kono
parents:
diff changeset
3 // Verify that inline variables and static data members that aren't odr-used
kono
parents:
diff changeset
4 // aren't emitted into assembly even at -O0.
kono
parents:
diff changeset
5 // { dg-final { scan-assembler-not "inlvarvariable" } }
kono
parents:
diff changeset
6
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
7 inline int inlvarvariable1 = 1; // { dg-warning "1:inline variables are only available with" "" { target c++14_down } }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
8 const inline int inlvarvariable2 = 2; // { dg-warning "7:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
9 namespace N
kono
parents:
diff changeset
10 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
11 int inline inlvarvariable3; // { dg-warning "7:inline variables are only available with" "" { target c++14_down } }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
12 const int inline inlvarvariable4 = 4; // { dg-warning "13:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
13 }
kono
parents:
diff changeset
14 struct S
kono
parents:
diff changeset
15 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
16 static inline double inlvarvariable5 = 5.0; // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
17 #if __cplusplus >= 201103L
kono
parents:
diff changeset
18 static constexpr int inlvarvariable6 = 6;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
19 static inline constexpr int inlvarvariable7 = 7; // { dg-warning "10:inline variables are only available with" "" { target { c++11 && c++14_down } } }
111
kono
parents:
diff changeset
20 #endif
kono
parents:
diff changeset
21 };
kono
parents:
diff changeset
22 template <int N> // { dg-warning "variable templates only available with" "" { target c++11_down } .+1 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
23 inline int inlvarvariable8; // { dg-warning "1:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
24 template <int N> // { dg-warning "variable templates only available with" "" { target c++11_down } .+1 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
25 const int inline inlvarvariable9 = 9; // { dg-warning "11:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
26 namespace N
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 template <int N> // { dg-warning "variable templates only available with" "" { target c++11_down } .+1 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
29 int inline inlvarvariable10 = 10; // { dg-warning "7:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
30 template <int N> // { dg-warning "variable templates only available with" "" { target c++11_down } .+1 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
31 const inline double inlvarvariable11 = 11.0; // { dg-warning "9:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
32 }
kono
parents:
diff changeset
33 template <int N>
kono
parents:
diff changeset
34 struct T
kono
parents:
diff changeset
35 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
36 static inline int inlvarvariable12 = 12; // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
111
kono
parents:
diff changeset
37 #if __cplusplus >= 201103L
kono
parents:
diff changeset
38 static constexpr int inlvarvariable13 = 13;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
39 static inline constexpr double inlvarvariable14 = 14.0; // { dg-warning "10:inline variables are only available with" "" { target { c++11 && c++14_down } } }
111
kono
parents:
diff changeset
40 #endif
kono
parents:
diff changeset
41 };
kono
parents:
diff changeset
42 #if __cplusplus < 201103L
kono
parents:
diff changeset
43 #define decltype(x) int
kono
parents:
diff changeset
44 #endif
kono
parents:
diff changeset
45 decltype (inlvarvariable1) v1 = inlvarvariable2 + sizeof (inlvarvariable1);
kono
parents:
diff changeset
46 decltype (N::inlvarvariable3) v2 = N::inlvarvariable4 + sizeof (N::inlvarvariable3);
kono
parents:
diff changeset
47 #if __cplusplus >= 201103L
kono
parents:
diff changeset
48 decltype (S::inlvarvariable6) v3 = sizeof (S::inlvarvariable5) + S::inlvarvariable6 + S::inlvarvariable7;
kono
parents:
diff changeset
49 #else
kono
parents:
diff changeset
50 int v3 = sizeof (S::inlvarvariable5);
kono
parents:
diff changeset
51 #endif
kono
parents:
diff changeset
52 decltype (inlvarvariable8<2>) v4 = inlvarvariable9<2> + sizeof (inlvarvariable8<2>);
kono
parents:
diff changeset
53 decltype (N::inlvarvariable10<0>) v5 = sizeof (N::inlvarvariable10<0>) + sizeof (N::inlvarvariable11<0>);
kono
parents:
diff changeset
54 #if __cplusplus >= 201103L
kono
parents:
diff changeset
55 decltype (T<-1>::inlvarvariable12) v6 = sizeof (T<-1>::inlvarvariable14) + sizeof (T<-1>::inlvarvariable12) + T<-1>::inlvarvariable13;
kono
parents:
diff changeset
56 #else
kono
parents:
diff changeset
57 int v6 = sizeof (T<-1>::inlvarvariable12);
kono
parents:
diff changeset
58 #endif