annotate gcc/testsuite/g++.dg/ext/flexary16.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR c++/71147 - [6 Regression] Flexible array member wrongly rejected
kono
parents:
diff changeset
2 // in template
kono
parents:
diff changeset
3 // { dg-do compile }
kono
parents:
diff changeset
4 // { dg-options "-Wpedantic -Wno-error=pedantic" }
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 template <typename>
kono
parents:
diff changeset
7 struct container
kono
parents:
diff changeset
8 {
kono
parents:
diff changeset
9 struct elem {
kono
parents:
diff changeset
10 unsigned u;
kono
parents:
diff changeset
11 };
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 struct incomplete {
kono
parents:
diff changeset
14 int x;
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 111
diff changeset
15 elem array[]; // { dg-warning "10:ISO C\\+\\+ forbids flexible array member" }
111
kono
parents:
diff changeset
16 };
kono
parents:
diff changeset
17 };
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 unsigned f (container<void>::incomplete* i)
kono
parents:
diff changeset
20 {
kono
parents:
diff changeset
21 return i->array [0].u;
kono
parents:
diff changeset
22 }
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 template <typename T>
kono
parents:
diff changeset
26 struct D: container<T>
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 struct S {
kono
parents:
diff changeset
29 int x;
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 111
diff changeset
30 typename container<T>::elem array[]; // { dg-warning "33:ISO C\\+\\+ forbids flexible array member" }
111
kono
parents:
diff changeset
31 };
kono
parents:
diff changeset
32 };
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 unsigned g (D<void>::S *s)
kono
parents:
diff changeset
36 {
kono
parents:
diff changeset
37 return s->array [0].u;
kono
parents:
diff changeset
38 }