1 // PR rtl-optimization/23478
3 // { dg-options "-O2" }
5 extern "C" void abort ();
16 asm volatile ("" : : : "memory");
18 class C2 : public C7 {};
20 template <class X> class C13
25 explicit C13 (X *p = 0) throw () : ma (p != 0), mb (p) {}
32 asm volatile ("" : : "r" (ma), "r" (mb) : "memory");
37 C1 (const C3 &, const C3 &, const C3 &, const C3 *&);
40 C1::C1 (const C3 &, const C3 &, const C3 &, const C3 *&)
50 virtual void f1 (C2 &, long *, void *, C3 &, void *, bool) = 0;
51 virtual C13<C14> f3 () const = 0;
61 asm volatile ("" : : "r" (&b) : "memory");
71 asm volatile ("" : : "r" (&b) : "memory");
98 static const C3 c3 = { 2 };
117 asm volatile ("" : "=r" (ret) : "r" (ll13));
122 xx15 (C3 &x, C13<C1> &y)
124 asm volatile ("" : : "r" (&x), "r" (&y) : "memory");
131 asm volatile ("" : "=r" (ret) : "0" (1), "r" (x) : "memory");
138 asm volatile ("" : : "r" (&x) : "memory");
153 asm volatile ("" : : : "memory");
158 C13<C7> f2 (C3 &v1, const void *v2, C8 *v6);
164 C5::f2 (C3 &v1, const void *v2, C8 *v6)
166 C13<C7> v13 = xx9 ();
168 for (long i = 1; i < 2; i++)
170 const C3 &ld = xx5 ();
176 for (long i = 0; i < xx16 (v2); ++i)
178 C13<C1> sk (new C1 (xx5 (), ld, xx5 (), xx4 ()));
182 for (long i = v4 - 1; i >= 0; --i)
185 for (long i = 0; i < 2 && !xx14 (); i++)
187 v6[i].f1 (v9, 0, __null, v1, __null, v8);
197 C5 c5 = { { __null, __null }, { 0, 0 } };
201 c5.f2 (xx12 (), __null, __null);