new file mode 100644
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-exceptions" } */
+struct S
+{
+ inline int fn1 () const { return s; }
+ __attribute__ ((noinline, noclone)) S *fn2 (int);
+ __attribute__ ((noinline, noclone)) void fn3 ();
+ __attribute__ ((noinline, noclone)) static S *fn4 (int);
+ S (int i) : s (i) {}
+ int s;
+};
+
+int a = 0;
+S *b = 0;
+
+S *
+S::fn2 (int i)
+{
+ a++;
+ if (a == 1)
+ return b;
+ if (a > 3)
+ __builtin_abort ();
+ b = this;
+ return new S (i + s);
+}
+
+S *
+S::fn4 (int i)
+{
+ b = new S (i);
+ return b;
+}
+
+void
+S::fn3 ()
+{
+ delete this;
+}
+
+void
+foo ()
+{
+ S *c = S::fn4 (20);
+ for (int i = 0; i < 2;)
+ {
+ S *d = c->fn2 (c->fn1 () + 10);
+ if (c != d)
+{
+ c->fn3 ();
+ c = d;
+ ++i;
+}
+ }
+ c->fn3 ();
+}
+
+int
+main ()
+{
+ foo ();
+}
deleted file mode 100644
@@ -1,62 +0,0 @@
-/* { dg-do run } */
-/* { dg-options "-O2 -fno-exceptions" } */
-struct S
-{
- inline int fn1 () const { return s; }
- __attribute__ ((noinline, noclone)) S *fn2 (int);
- __attribute__ ((noinline, noclone)) void fn3 ();
- __attribute__ ((noinline, noclone)) static S *fn4 (int);
- S (int i) : s (i) {}
- int s;
-};
-
-int a = 0;
-S *b = 0;
-
-S *
-S::fn2 (int i)
-{
- a++;
- if (a == 1)
- return b;
- if (a > 3)
- __builtin_abort ();
- b = this;
- return new S (i + s);
-}
-
-S *
-S::fn4 (int i)
-{
- b = new S (i);
- return b;
-}
-
-void
-S::fn3 ()
-{
- delete this;
-}
-
-void
-foo ()
-{
- S *c = S::fn4 (20);
- for (int i = 0; i < 2;)
- {
- S *d = c->fn2 (c->fn1 () + 10);
- if (c != d)
-{
- c->fn3 ();
- c = d;
- ++i;
-}
- }
- c->fn3 ();
-}
-
-int
-main ()
-{
- foo ();
-}