1 // PR tree-optimization/39259 2 // { dg-do compile } 3 // { dg-options "-O2" } 4 5 6 extern "C" int __mysetjmp () __attribute__ ((__returns_twice__)); 7 8 class TContStatus {}; 9 10 class TContEvent 11 { 12 public: 13 inline void Execute () throw(); 14 }; 15 16 class TCont 17 { 18 public: ReadD(void * buf,int deadline)19 TContStatus ReadD (void* buf, int deadline) 20 { 21 TContEvent event; 22 event.Execute (); 23 return TContStatus(); 24 } ReadI(void * buf)25 TContStatus ReadI (void *buf) 26 { 27 return ReadD (buf, 1); 28 } 29 }; 30 Execute()31void TContEvent::Execute () throw () 32 { 33 __mysetjmp(); 34 } 35 Broken(TCont * mCont)36void Broken (TCont *mCont) 37 { 38 mCont->ReadI(0); 39 mCont->ReadI(0); 40 } 41