view gcc/testsuite/g++.dg/torture/pr64280.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

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