view gcc/testsuite/g++.dg/ipa/devirt-53.C @ 158:494b0b89df80 default tip

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

// { dg-do assemble }
// { dg-options "-O2 -fdump-tree-fre1-details -std=c++11 -Wno-return-type" }
typedef unsigned a;
enum b : a;
class c {
public:
  virtual a d();
};
using e = int;
class f;
class h {
public:
  f *operator->();
};
class i {
public:
  ~i() { j->d(); }
  c *j;
};
template <class g> class k : i {
public:
  k(g *);
};
class l;
class m {
  virtual b n(const e &, l **);
};
class o {
protected:
  h p;
};
class G {
  virtual b r(const e &, l **);
};
class l : G {};
class q {
public:
  q(l *);
  template <class t> void s(t);
};
class f : c {
  a d();
  virtual b r(e);

public:
  class L : public l, o, m {
    b r(const e &y, l **) { p->r(y); }
    b n(const e &, l **) { k<l> a = this; }
  };
};
c u;
void fn1() {
  c v;
  k<c> b(&u);
  q(new f::L).s(v);
}
/* Check that f::d appears as possible target.  */
/* { dg-final { scan-tree-dump "f::d" "fre1"  } } */