// PR tree-optimization/55329 // { dg-do compile } // { dg-options "-O -fno-guess-branch-probability -fnon-call-exceptions --param=early-inlining-insns=111" } void *f1 (); void f2 (void *); void f3 (); static inline void * f4 () { void *p = f1 (); if (!p) f3 (); return p; } struct A { int *a; A (); ~A () { a3 (); } int a1 (int * p) { if (!p) f3 (); f2 (p); } int *a2 (); void a3 () { if (*a) a1 (a); } int a4 (int x) { if (*a) f4 (); *a2 () += x; } }; struct B : A { ~B () { a3 (); } }; template struct C { T *c; C (); int c1 () { return *(int *) f4 (); } ~C () { if (c1 ()) for (T *t = c + c2 (); t != c; t--) T (); } int c2 (); }; class D { C > c; }; struct E { int *e; ~E () { delete e; } }; struct F { int *f1 (); D f2; E f3; F () { f4 (); } }; struct G : F { B g; G () { g.a4 (*g1 ()->f1 ()); g1 ()->f1 (); } F *g1 (); }; void foo () { G g; }