annotate gcc/testsuite/g++.dg/torture/pr94216.C @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 // { dg-do compile }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 // { dg-additional-options "-g" }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 template <int _Nm> struct A { typedef int _Type[_Nm]; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 template <int _Nm> struct B {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 typename A<_Nm>::_Type _M_elems;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 void operator[](int) { int a = *_M_elems; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 class C {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 struct D {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 using type = int *;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 public:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 using pointer = D::type;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 class F {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 public:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 using pointer = C::pointer;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 F(pointer);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 struct G {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 int data;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 template <int MaxDimensions> struct H {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 using dimensions_t = B<MaxDimensions>;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 dimensions_t dimensions;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 G mem;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 template <int MaxDimensions, typename Allocator, typename DimT, typename AlignT>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 H<MaxDimensions> alloc_view(int, DimT, AlignT, Allocator) {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 H<MaxDimensions> b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 b.dimensions[0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 return b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 namespace memory {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 template <typename> using DynMdView = H<6>;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 class I {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 I();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 memory::DynMdView<void> m_view;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 F m_memory;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 int c, d, e;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 I::I() : m_view(alloc_view<6>(c, d, e, [] {})), m_memory(&m_view.mem.data) {}