// { 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" } |