| // { dg-do compile } | |
| class A | |
| { | |
| public: | |
| A (); | |
| }; | |
| class B | |
| { | |
| public: | |
| B (int); | |
| operator void *() { return m_fn1 () ? 0 : this; } | |
| int m_fn1 (); | |
| }; | |
| typedef int jmp_buf[]; | |
| struct C | |
| { | |
| jmp_buf cond_; // { dg-error "flexible array member" } | |
| }; | |
| class F | |
| { | |
| C what_; | |
| bool m_fn2 (); | |
| }; | |
| int _setjmp (int[]); | |
| void longjmp (); | |
| class D | |
| { | |
| public: | |
| D () { longjmp (); } | |
| }; | |
| bool | |
| F::m_fn2 () | |
| { | |
| B a (0); | |
| if (a) | |
| if (_setjmp (what_.cond_)) | |
| return 0; | |
| else | |
| D (); | |
| A b; | |
| } // { dg-warning "control reaches end of non-void function" } |