// { dg-options "-r -O2 -flto -fno-devirtualize" } | |
// { dg-require-effective-target lto } | |
class A; | |
class B | |
{ | |
public: | |
A *operator->(); | |
}; | |
class C | |
{ | |
public: | |
virtual void m_fn1 (); | |
}; | |
class A | |
{ | |
public: | |
C *m_fn2 (); | |
}; | |
class D | |
{ | |
public: | |
void | |
m_fn3 () | |
{ | |
list_m->m_fn2 ()->m_fn1 (); | |
} | |
B list_m; | |
}; | |
class F | |
{ | |
public: | |
D m_fn4 (); | |
}; | |
class G | |
{ | |
public: | |
F m_fn5 (int, int); | |
}; | |
class H | |
{ | |
public: | |
void | |
m_fn6 () | |
{ | |
fieldEngine_m.m_fn5 (0, 0).m_fn4 ().m_fn3 (); | |
} | |
G fieldEngine_m; | |
}; | |
void | |
fn1 (H a) | |
{ | |
a.m_fn6 (); | |
} |