// // 11588.cpp // #include <iostream> class StgInfoTable {}; class StgHeader { private: StgInfoTable* info; public: StgHeader() { info = new StgInfoTable(); } ~StgHeader() { delete info; } }; class StgClosure { private: StgHeader header; StgClosure* payload[1]; public: StgClosure(bool make_payload = true) { if (make_payload) payload[0] = new StgClosure(false); else payload[0] = NULL; } ~StgClosure() { if (payload[0]) delete payload[0]; } }; typedef unsigned long long int ptr_type; int main() { StgClosure* r14_ = new StgClosure(); r14_ = (StgClosure*)(((ptr_type)r14_ | 0x01)); // set the LSB to 1 for tagging ptr_type r14 = (ptr_type)r14_; int x = 0; x = 3; return (x-1); // Set breakpoint here. }