Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/torture/pr45580.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
// { dg-do compile } // { dg-additional-options "-Wno-return-type" } namespace std { typedef __SIZE_TYPE__ size_t; } inline void* operator new(std::size_t, void* __p) throw() { return __p; } class Noncopyable { }; struct CollectorCell { }; template<typename T> class PassRefPtr { public: T* releaseRef() const { } }; template <typename T> class NonNullPassRefPtr { public: template <class U> NonNullPassRefPtr(const PassRefPtr<U>& o) : m_ptr(o.releaseRef()) { } mutable T* m_ptr; }; struct ClassInfo; class JSValue { }; JSValue jsNull(); class Structure; class JSGlobalData { static void storeVPtrs(); }; class JSCell : public Noncopyable { friend class JSObject; friend class JSGlobalData; virtual ~JSCell(); }; class JSObject : public JSCell { public: explicit JSObject(NonNullPassRefPtr<Structure>); static PassRefPtr<Structure> createStructure(JSValue prototype) { } }; class JSByteArray : public JSObject { friend class JSGlobalData; enum VPtrStealingHackType { VPtrStealingHack }; JSByteArray(VPtrStealingHackType) : JSObject(createStructure(jsNull())), m_classInfo(0) { } const ClassInfo* m_classInfo; }; void JSGlobalData::storeVPtrs() { CollectorCell cell; void* storage = &cell; JSCell* jsByteArray = new (storage) JSByteArray(JSByteArray::VPtrStealingHack); jsByteArray->~JSCell(); }