2 // { dg-do compile { target c++11 } }
3 // { dg-options "-Wuninitialized -Winit-self" }
8 int fintcr(const int &);
18 S(int (*)[1]) : x(x) { } // { dg-warning "initialized with itself" }
19 S(int (*)[2]) : x(x + x) { } // { dg-warning "member .S::x. is used uninitialized" }
20 S(int (*)[3]) : x(static_cast<int>(y)) { } // { dg-warning "member .S::y. is used uninitialized" }
21 S(int (*)[4]) : x(static_cast<int>(x)) { } // { dg-warning "member .S::x. is used uninitialized" }
22 S(int (*)[5]) : x(fint(x)) { }
23 S(int (*)[6]) : x(fint(y)) { }
25 S(int (*)[7]) : x(sizeof(x)) { }
26 S(int (*)[8]) : x(sizeof(y)) { }
27 S(int (*)[9]) : p(&x) { }
28 S(int (*)[10]) : x(fintp(&y)) { }
29 S(int (*)[11]) : x(fintr(y)) { }
30 S(int (*)[12]) : x(fintcr(y)) { }
31 S(int (*)[26]) : x(((void)(__typeof(y)) 1, 1)) { }
32 S(int (*)[27]) : x(((void)(decltype(y)) 1, 1)) { }
33 S(int (*)[28]) : x(__alignof__(y)) { }
34 S(int (*)[29]) : x(noexcept(y)) { }
36 S(int (*)[13]) : x(0), y(x ? y : y) { }
37 S(int (*)[14]) : x(0), y(1 + (x ? y : y)) { }
38 S(int (*)[15]) : x(-y) { } // { dg-warning "member .S::y. is used uninitialized" }
39 S(int (*)[16]) : x(1 << y) { } // { dg-warning "member .S::y. is used uninitialized" }
40 S(int (*)[17]) : x(this->y) { } // { dg-warning "member .S::y. is used uninitialized" }
41 S(int (*)[18]) : x(arr[y]) { } // { dg-warning "member .S::y. is used uninitialized" }
42 S(int (*)[19]) : x(0), y(x ? x : y) { }
43 S(int (*)[20]) : x(0), y(y ? x : y) { }
44 S(int (*)[21]) : x(0), y(y ? x : x) { }
45 S(int (*)[22]) : x(0), y((fint(y), x)) { }
46 S(int (*)[23]) : x(0), y(x += y) { } // "member .S::y. is used uninitialized" but too complex for the FE
47 S(int (*)[24]) : x(y += 10) { } // "member .S::y. is used uninitialized" but too complex for the FE
48 S(int (*)[25]) : x(y++) { } // { dg-warning "member .S::y. is used uninitialized" }
58 R(int (*)[1]) : x{x} { } // { dg-warning "member .R::x. is used uninitialized" }
59 R(int (*)[2]) : x{x + x} { } // { dg-warning "member .R::x. is used uninitialized" }
60 R(int (*)[3]) : x{static_cast<int>(y)} { } // { dg-warning "member .R::y. is used uninitialized" }
61 R(int (*)[4]) : x{static_cast<int>(x)} { } // { dg-warning "member .R::x. is used uninitialized" }
62 R(int (*)[5]) : x{fint(x)} { }
63 R(int (*)[6]) : x{fint(y)} { }
65 R(int (*)[7]) : x{sizeof(x)} { }
66 R(int (*)[8]) : x{sizeof(y)} { }
67 R(int (*)[9]) : p{&x} { }
68 R(int (*)[10]) : x{fintp(&y)} { }
69 R(int (*)[11]) : x{fintr(y)} { }
70 R(int (*)[12]) : x{fintcr(y)} { }
71 R(int (*)[26]) : x{((void)(__typeof(y)) 1, 1)} { }
72 R(int (*)[27]) : x{((void)(decltype(y)) 1, 1)} { }
73 R(int (*)[28]) : x{__alignof__(y)} { }
74 R(int (*)[29]) : x{noexcept(y)} { }
76 R(int (*)[13]) : x{0}, y{x ? y : y} { }
77 R(int (*)[14]) : x{0}, y{1 + (x ? y : y)} { }
78 R(int (*)[15]) : x{-y} { } // { dg-warning "member .R::y. is used uninitialized" }
79 R(int (*)[16]) : x{1 << y} { } // { dg-warning "member .R::y. is used uninitialized" }
80 R(int (*)[17]) : x{this->y} { } // { dg-warning "member .R::y. is used uninitialized" }
81 R(int (*)[18]) : x{arr[y]} { } // { dg-warning "member .R::y. is used uninitialized" }
82 R(int (*)[19]) : x{0}, y{x ? x : y} { }
83 R(int (*)[20]) : x{0}, y{y ? x : y} { }
84 R(int (*)[21]) : x{0}, y{y ? x : x} { }
85 R(int (*)[22]) : x{0}, y{(fint(y), x)} { }
86 R(int (*)[23]) : x{0}, y{x += y} { } // "member .R::y. is used uninitialized" but too complex for the FE
87 R(int (*)[24]) : x{y += 10} { } // "member .R::y. is used uninitialized" but too complex for the FE
88 R(int (*)[25]) : x{y++} { } // { dg-warning "member .R::y. is used uninitialized" }