Home | History | Annotate | Download | only in issue_11588
      1 //
      2 //  11588.cpp
      3 //
      4 
      5 #include <iostream>
      6 
      7 class StgInfoTable {};
      8 
      9 class StgHeader
     10 {
     11 private:
     12 	StgInfoTable* info;
     13 public:
     14 	StgHeader()
     15 	{
     16 		info = new StgInfoTable();
     17 	}
     18 	~StgHeader()
     19 	{
     20 		delete info;
     21 	}
     22 };
     23 
     24 class StgClosure
     25 {
     26 private:
     27 	StgHeader header;
     28 	StgClosure* payload[1];
     29 public:
     30 	StgClosure(bool make_payload = true)
     31 	{
     32 		if (make_payload)
     33 			payload[0] = new StgClosure(false);
     34 		else
     35 			payload[0] = NULL;
     36 	}
     37 	~StgClosure()
     38 	{
     39 		if (payload[0])
     40 			delete payload[0];
     41 	}
     42 };
     43 
     44 typedef unsigned long long int ptr_type;
     45 
     46 int main()
     47 {
     48 	StgClosure* r14_ = new StgClosure();
     49 	r14_ = (StgClosure*)(((ptr_type)r14_ | 0x01)); // set the LSB to 1 for tagging
     50 	ptr_type r14 = (ptr_type)r14_;
     51 	int x = 0;
     52 	x = 3;
     53 	return (x-1); // Set breakpoint here.
     54 }
     55