1 /* { dg-do compile } */
2 
3 void deallocate(void *);
4 void *a;
5 
6 struct C {
7     virtual void m_fn1();
8 };
9 
10 struct D {
m_fn2D11     C *m_fn2() {
12 	if (a)
13 	  __builtin_abort();
14     }	// { dg-warning "control reaches end of non-void function" }
15 };
16 D getd();
17 
18 struct vec_int {
19     int _M_start;
~vec_intvec_int20     ~vec_int() {
21 	if (_M_start)
22 	  deallocate(&_M_start);
23     }
24 };
25 vec_int *b;
26 
27 struct I {
28     virtual void m_fn3();
29 };
30 
m_fn3()31 void I::m_fn3() {
32     if (a)
33       getd().m_fn2()->m_fn1();
34     b->~vec_int();
35 }
36 
37