------- Comment #3 from rguenth at gcc dot gnu dot org 2009-03-04 22:08 ------- Reduced testcase:
class QScriptEnginePrivate; class QScriptClassInfo; namespace QScript { enum Type { InvalidType }; }; class QScriptValueImpl { public: inline QScriptValueImpl(); QScript::Type m_type; }; namespace QScript { namespace Ecma { class Core { public: inline QScriptEnginePrivate *engine() const { } inline QScriptClassInfo *classInfo() const { } QScriptValueImpl publicPrototype; }; class Boolean: public Core { void newBoolean(QScriptValueImpl *result, bool value = false); }; } template <typename T> class Buffer { public: inline void reserve(int num); inline void resize(int s); T *m_data; int m_capacity; int m_size; }; } template <typename T> void QScript::Buffer<T>::resize(int s) { if (m_capacity < s) reserve (s << 1); } template <typename T> void QScript::Buffer<T>::reserve(int x) { T *new_data = new T[m_capacity]; for (int i=0; i<m_size; ++i) new_data[i] = m_data[i]; } class QScriptObject { public: inline void reset(); QScript::Buffer<QScriptValueImpl> m_values; }; class QScriptEnginePrivate { public: inline QScriptObject *allocObject(); inline void newObject(QScriptValueImpl *o, const QScriptValueImpl &proto, QScriptClassInfo *oc = 0); }; inline void QScriptEnginePrivate::newObject(QScriptValueImpl *o, const QScriptValueImpl &proto, QScriptClassInfo *oc) { QScriptObject *od = allocObject(); od->reset(); } inline QScriptValueImpl::QScriptValueImpl() : m_type(QScript::InvalidType) { } inline void QScriptObject::reset() { m_values.resize(0); } namespace QScript { namespace Ecma { void Boolean::newBoolean(QScriptValueImpl *result, bool value) { engine()->newObject(result, publicPrototype, classInfo()); } } } -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-03-04 22:08:34 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39367