// PR debug/61033 // { dg-do compile } // { dg-options "-g -O2" } # 0 "" 3 struct A { A(int) : ch() {} unicode() {} int ch; }; class QChar { public: QChar(A ch) : ucs(ch.unicode()) {} int ucs; }; class B { public: int isShared_count; isShared() { return isShared_count; } }; struct C { unsigned short *data() { void *__trans_tmp_1; __trans_tmp_1 = reinterpret_cast(0) + offset; return static_cast(__trans_tmp_1); } B ref; int size; int alloc; int offset; }; class D { public: D(char *) : m_data() {} * m_data; }; class F { public: F(int, QChar); F(D); operator+=(QChar) { if (d->ref.isShared() || d->alloc) reallocData(); d->data()[d->size++] = 0; d->data()[0] = '\0'; } C *d; reallocData(); }; struct G { struct H { int begin; }; H d; size() { return d.begin; } }; class I { G p; public: ~I(); length() { return p.size(); } }; class J; class K { public: J toNodeListProperty() const; }; class L { F toQml(const K &property) const; toQml() const; }; class J { public: I toModelNodeList(); }; F::F(D) {} F L::toQml(const K &property) const { I nodes = property.toNodeListProperty().toModelNodeList(); F result(""); F(0, A(' ')); for (int i = 0; i < nodes.length(); ++i) { if (i) result += A(','); result += A('\n'); toQml(); } }