Don't use nested function in test-ffs
authorSiddhesh Poyarekar <siddhesh@sourceware.org>
Thu, 12 Nov 2020 07:46:02 +0000 (13:16 +0530)
committerSiddhesh Poyarekar <siddhesh@sourceware.org>
Thu, 12 Nov 2020 09:24:24 +0000 (14:54 +0530)
There is no real need to use a nested function in that test, so break
it out so that it can build with clang too.

string/test-ffs.c

index 0df488f..af03df9 100644 (file)
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <support/check.h>
+
+void try (const char *name, long long int param, int value, int expected)
+{
+  if (value != expected)
+    {
+      printf ("%s(%#llx) expected %d got %d\n",
+             name, param, expected, value);
+      support_record_failure ();
+    }
+  else
+    printf ("%s(%#llx) as expected %d\n", name, param, value);
+}
 
 int
 do_test (void)
 {
-  int failures = 0;
   int i;
 
-  auto void try (const char *name, long long int param, int value,
-                int expected);
-
-  void try (const char *name, long long int param, int value, int expected)
-    {
-      if (value != expected)
-       {
-         printf ("%s(%#llx) expected %d got %d\n",
-                 name, param, expected, value);
-         ++failures;
-       }
-      else
-       printf ("%s(%#llx) as expected %d\n", name, param, value);
-    }
-
 #define TEST(fct, type) \
   try (#fct, 0, fct ((type) 0), 0);                                          \
   for (i=0 ; i < 8 * sizeof (type); i++)                                     \
@@ -54,12 +51,7 @@ do_test (void)
   TEST (ffsl, long int);
   TEST (ffsll, long long int);
 
-  if (failures)
-    printf ("Test FAILED!  %d failure%s.\n", failures, &"s"[failures == 1]);
-  else
-    puts ("Test succeeded.");
-
-  return failures;
+  return 0;
 }
 
 #include <support/test-driver.c>