view gcc/testsuite/g++.dg/torture/pr64280.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
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" }