3 // { dg-options "-O3" }
4 // { dg-additional-options "-minline-stringops-dynamically" { target i?86-*-* x86_64-*-* } }
6 template <typename S, typename T, typename U>
14 template <typename S, typename T, typename U>
15 void f2 (S x, T y, U z)
21 struct B { static char f3 (A, unsigned); };
23 template <typename S, typename U>
28 template <typename S, typename T, typename U>
29 static S f5 (S x, T y, U z) { f2 (x, y, z); return S(); }
32 template <typename S, typename T, typename U>
33 void f6 (S x, T y, U z) { C::f5 (x, y, z); }
35 template <typename S, typename T, typename U, typename V>
36 void f7 (S x, T y, U z, V) { f6 (x, y, z); }
40 struct D : A { char e; D (A); };
42 E (int x) : g(f) { f8 (x); }
45 void f9 (int x) { x ? B::f3 (g, x) : char (); }
46 void f8 (int x) { f9 (x); }
51 F (int x) : E(x) { f10 (x); f4 (this, 0); }
53 void f10 (int x) { f7 (&g.e, x, h, 0); }