annotate gcc/testsuite/g++.dg/torture/pr52772.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 }
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 typedef __SIZE_TYPE__ size_t;
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 class c1;
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 class c2 {
kono
parents:
diff changeset
8 public: c2() { };
kono
parents:
diff changeset
9 void *operator new(size_t size, const c1 & crc1);
kono
parents:
diff changeset
10 };
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 class c3 {
kono
parents:
diff changeset
13 public: c3() { _Obj = 0; }
kono
parents:
diff changeset
14 ~c3() { if (_Obj) delete _Obj; }
kono
parents:
diff changeset
15 void set(c2 *pObj);
kono
parents:
diff changeset
16 protected: c2 *_Obj;
kono
parents:
diff changeset
17 };
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 void c3::set(c2 *pObj) { _Obj = pObj; };
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 template<class TYPE> class tc1 : public c2 {
kono
parents:
diff changeset
22 public: tc1(int n=0){};
kono
parents:
diff changeset
23 int get() const;
kono
parents:
diff changeset
24 TYPE& operator[] (int id);
kono
parents:
diff changeset
25 TYPE * _data;
kono
parents:
diff changeset
26 int _size;
kono
parents:
diff changeset
27 };
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 template<class TYPE> TYPE & tc1<TYPE>::operator[] (int id) {
kono
parents:
diff changeset
30 return _data[id];
kono
parents:
diff changeset
31 }
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 template<class TYPE> int tc1<TYPE>::get() const {
kono
parents:
diff changeset
34 return _size;
kono
parents:
diff changeset
35 }
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 class c4 {
kono
parents:
diff changeset
38 public: c4();
kono
parents:
diff changeset
39 };
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 class c5 : public c2 {
kono
parents:
diff changeset
42 protected: c2 * _own;
kono
parents:
diff changeset
43 public: c5(c2 *o) : _own(o) { }
kono
parents:
diff changeset
44 c5(const c4 & box);
kono
parents:
diff changeset
45 int add(const c4 & ext);
kono
parents:
diff changeset
46 };
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 class c6 {
kono
parents:
diff changeset
49 public: int get() const {};
kono
parents:
diff changeset
50 };
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 class c7 {
kono
parents:
diff changeset
53 friend class c8;
kono
parents:
diff changeset
54 int find(c6 * loop) const;
kono
parents:
diff changeset
55 };
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 class c8 {
kono
parents:
diff changeset
58 const c1 & _rc1;
kono
parents:
diff changeset
59 int tria(c7 * face, c5 * vtree0 = 0);
kono
parents:
diff changeset
60 };
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 int c8::tria(c7 * face, c5 * vtree0) {
kono
parents:
diff changeset
63 c6 *sLData[64];
kono
parents:
diff changeset
64 tc1<c6*> loops(64);
kono
parents:
diff changeset
65 while (loops.get() > 1) {
kono
parents:
diff changeset
66 c6 *iloop = 0;
kono
parents:
diff changeset
67 for (int j=1; j<loops.get(); j++) {
kono
parents:
diff changeset
68 if (loops[j]->get() < 32) {
kono
parents:
diff changeset
69 iloop = loops[j];
kono
parents:
diff changeset
70 }
kono
parents:
diff changeset
71 }
kono
parents:
diff changeset
72 face->find(iloop);
kono
parents:
diff changeset
73 }
kono
parents:
diff changeset
74 c4 box;
kono
parents:
diff changeset
75 c3 ctree;
kono
parents:
diff changeset
76 c5 *vtree = vtree0;
kono
parents:
diff changeset
77 if (!vtree) {
kono
parents:
diff changeset
78 vtree = new (_rc1) c5(box);
kono
parents:
diff changeset
79 ctree.set(vtree);
kono
parents:
diff changeset
80 for (int j=0; j<1; j++) {
kono
parents:
diff changeset
81 c4 sVBBox;
kono
parents:
diff changeset
82 vtree->add(sVBBox);
kono
parents:
diff changeset
83 }
kono
parents:
diff changeset
84 }
kono
parents:
diff changeset
85 }