2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / pr61033.C
blob6974351a9c03d88a90e0a2131401bc07c1296983
1 // PR debug/61033
2 // { dg-do compile }
3 // { dg-options "-g -O2" }
5 # 0 "" 3
6 struct A {
7   A(int) : ch() {}
8   unicode() {}
9   int ch;
11 class QChar {
12 public:
13   QChar(A ch) : ucs(ch.unicode()) {}
14   int ucs;
16 class B {
17 public:
18   int isShared_count;
19   isShared() { return isShared_count; }
21 struct C {
22   unsigned short *data() {
23     void *__trans_tmp_1;
24     __trans_tmp_1 = reinterpret_cast<char *>(0) + offset;
25     return static_cast<unsigned short *>(__trans_tmp_1);
26   }
27   B ref;
28   int size;
29   int alloc;
30   int offset;
32 class D {
33 public:
34   D(char *) : m_data() {} * m_data;
36 class F {
37 public:
38   F(int, QChar);
39   F(D);
40   operator+=(QChar) {
41     if (d->ref.isShared() || d->alloc)
42       reallocData();
43     d->data()[d->size++] = 0;
44     d->data()[0] = '\0';
45   }
46   C *d;
47   reallocData();
49 struct G {
50   struct H {
51     int begin;
52   };
53   H d;
54   size() { return d.begin; }
56 class I {
57   G p;
58 public:
59   ~I();
60   length() { return p.size(); }
62 class J;
63 class K {
64 public:
65   J toNodeListProperty() const;
67 class L {
68   F toQml(const K &property) const;
69   toQml() const;
71 class J {
72 public:
73   I toModelNodeList();
75 F::F(D) {}
76 F L::toQml(const K &property) const {
77   I nodes = property.toNodeListProperty().toModelNodeList();
78   F result("");
79   F(0, A(' '));
80   for (int i = 0; i < nodes.length(); ++i) {
81     if (i)
82       result += A(',');
83     result += A('\n');
84     toQml();
85   }