view gcc/testsuite/g++.dg/ipa/pr69649.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

// PR c++/69649
// { dg-do compile }
// { dg-options "-O2" }

struct A { virtual void m1 (); };
struct C : A { void m1 () { m1 (); } };
template <class T> struct B
{
  T *t;
  B (T *x) : t (x) { if (t) t->m1 (); }
  B (const B &);
};
struct D : public C {};
struct F : public D
{
  virtual B<D> m2 ();
  virtual B<D> m3 ();
  int m4 ();
};
struct G : F
{
  B<D> m2 ();
  B<D> m3 ();
};
B<D> G::m2 ()
{
  if (m4 () == 0)
    return this;
  return 0;
}
B<D> G::m3 ()
{
  if (m4 () == 0)
    return this;
  return 0;
}