200x-xx-xx Nathan Sidwell <nathan@codesourcery.com>
authorRichard Sandiford <richard@codesourcery.com>
Fri, 9 Feb 2007 13:50:42 +0000 (13:50 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 9 Feb 2007 13:50:42 +0000 (13:50 +0000)
gcc/testsuite/
* gcc.c-torture/execute/builtins/memops-asm-lib.c: Do the copy or
set before checking whether it was allowed.
* gcc.c-torture/execute/builtins/lib/memset.c: Do the memset
before checking inside_main.

From-SVN: r121746

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/builtins/lib/memset.c
gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm-lib.c

index 791ecc9596e01f861d23789c6d713a89d0ad7f41..f30c006c9bdadcda51575adb46af8f63c0e8319a 100644 (file)
@@ -1,3 +1,10 @@
+2007-02-09  Richard Sandiford  <richard@codesourcery.com>
+
+       * gcc.c-torture/execute/builtins/memops-asm-lib.c: Do the copy or
+       set before checking whether it was allowed.
+       * gcc.c-torture/execute/builtins/lib/memset.c: Do the memset
+       before checking inside_main.
+
 2007-02-09  Richard Sandiford  <richard@codesourcery.com>
 
        * gcc.dg/compat/struct-layout-1.h (v16sf): Define to v4sf on
index 615dff6e7c0a5f6df2a2a87302e2e09abd28cea3..4bfa33ea66f3666a5d0626a90c4b479c83fc0f89 100644 (file)
@@ -4,15 +4,16 @@ extern int inside_main;
 void *
 memset (void *dst, int c, __SIZE_TYPE__ n)
 {
+  while (n-- != 0)
+    n[(char *) dst] = c;
+
   /* Single-byte memsets should be done inline when optimisation
-     is enabled.  */
+     is enabled.  Do this after the copy in case we're being called to
+     initialize bss.  */
 #ifdef __OPTIMIZE__
   if (inside_main && n < 2)
     abort ();
 #endif
 
-  while (n-- != 0)
-    n[(char *) dst] = c;
-
   return dst;
 }
index 4f66ffc48c270c8210d01740e5375d65bd09c5ca..2edd0ffa748147e95f7a093312ded0b4dc4f2124 100644 (file)
@@ -51,27 +51,29 @@ my_bzero (void *d, size_t n)
 void *
 memcpy (void *d, const void *s, size_t n)
 {
+  void *result = my_memcpy (d, s, n);
   TEST_ABORT;
-  return my_memcpy (d, s, n);
+  return result;
 }
 
 void
 bcopy (const void *s, void *d, size_t n)
 {
-  TEST_ABORT;
   my_bcopy (s, d, n);
+  TEST_ABORT;
 }
 
 void *
 memset (void *d, int c, size_t n)
 {
+  void *result = my_memset (d, c, n);
   TEST_ABORT;
-  return my_memset (d, c, n);
+  return result;
 }
 
 void
 bzero (void *d, size_t n)
 {
-  TEST_ABORT;
   my_bzero (d, n);
+  TEST_ABORT;
 }