Replace g++.dg/pr65802.C with gcc.dg/pr65802.c
authorTom de Vries <tom@codesourcery.com>
Fri, 24 Apr 2015 14:18:57 +0000 (14:18 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Fri, 24 Apr 2015 14:18:57 +0000 (14:18 +0000)
2015-04-24  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/65802
* g++.dg/pr65802.C: Move to ...
* gcc.dg/pr65802.c: ... here.  Add -fexceptions to dg-options. Include
stdarg.h.  Rewrite for C.
(fn1): Use va_list and va_arg.  Make variable args function.  Add use of
va_start and va_end.  Remove unnecessary inline asm.

From-SVN: r222413

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr65802.C [deleted file]
gcc/testsuite/gcc.dg/pr65802.c [new file with mode: 0644]

index 4b2f62bc32dcd7aa8db15dafda4936f99360b852..3e2b154236b896e3d63aa0ce080391662a807b59 100644 (file)
@@ -1,3 +1,12 @@
+2015-04-24  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/65802
+       * g++.dg/pr65802.C: Move to ...
+       * gcc.dg/pr65802.c: ... here.  Add -fexceptions to dg-options. Include
+       stdarg.h.  Rewrite for C.
+       (fn1): Use va_list and va_arg.  Make variable args function.  Add use of
+       va_start and va_end.  Remove unnecessary inline asm.
+
 2015-04-24  Uros Bizjak  <ubizjak@gmail.com>
            Wei Mi  <wmi@google.com>
 
diff --git a/gcc/testsuite/g++.dg/pr65802.C b/gcc/testsuite/g++.dg/pr65802.C
deleted file mode 100644 (file)
index 26e5317..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-// { dg-do compile }
-// { dg-options "-O0" }
-
-typedef int tf ();
-
-struct S
-{
-  tf m_fn1;
-} a;
-
-void
-fn1 ()
-{
-  try
-    {
-      __builtin_va_list c;
-      {
-       int *d = __builtin_va_arg (c, int *);
-       int **e = &d;
-       __asm__("" : "=d"(e));
-       a.m_fn1 ();
-      }
-      a.m_fn1 ();
-    }
-  catch (...)
-    {
-
-    }
-}
diff --git a/gcc/testsuite/gcc.dg/pr65802.c b/gcc/testsuite/gcc.dg/pr65802.c
new file mode 100644 (file)
index 0000000..fcec234
--- /dev/null
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -fexceptions" } */
+
+#include <stdarg.h>
+
+struct S
+{
+  int (*m_fn1) (void);
+} a;
+
+void
+fn1 (int d, ...)
+{
+  va_list c;
+  va_start (c, d);
+
+  {
+    int *d = va_arg (c, int *);
+
+    int **e = &d;
+
+    a.m_fn1 ();
+  }
+
+  a.m_fn1 ();
+
+  va_end (c);
+}