// { dg-do run } // prms-id: 9732 int count; int bail = 0; extern "C" void abort (void); extern "C" void _exit (int); struct base { base () { ++count; } ~base () { --count; } base(const base&o) { ++count; } }; class D { public: ~D() { if (bail++) { // On some Linux boxes, we run the dtor for d twice, // once before exit, and once after! abort (); } else { if (count != 0) _exit (1); _exit (0); } } } d; base base_object; base base_returning_function (); const base& base_ref = base_returning_function (); int main () { } base base_returning_function () { base local_base_object; return local_base_object; }