modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/builtins/memmove-2.c (about) 1 /* Copyright (C) 2004 Free Software Foundation. 2 3 Check builtin memmove and bcopy optimization when length is 1. 4 5 Written by Jakub Jelinek, 9/14/2004. */ 6 7 extern void abort (void); 8 typedef __SIZE_TYPE__ size_t; 9 extern void *memmove (void *, const void *, size_t); 10 extern void bcopy (const void *, void *, size_t); 11 extern int memcmp (const void *, const void *, size_t); 12 13 char p[32] = "abcdefg"; 14 char *q = p + 4; 15 16 void 17 main_test (void) 18 { 19 /* memmove with length 1 can be optimized into memcpy if it can be 20 expanded inline. */ 21 if (memmove (p + 2, p + 3, 1) != p + 2 || memcmp (p, "abddefg", 8)) 22 abort (); 23 if (memmove (p + 1, p + 1, 1) != p + 1 || memcmp (p, "abddefg", 8)) 24 abort (); 25 if (memmove (q, p + 4, 1) != p + 4 || memcmp (p, "abddefg", 8)) 26 abort (); 27 bcopy (p + 5, p + 6, 1); 28 if (memcmp (p, "abddeff", 8)) 29 abort (); 30 bcopy (p + 1, p + 1, 1); 31 if (memcmp (p, "abddeff", 8)) 32 abort (); 33 bcopy (q, p + 4, 1); 34 if (memcmp (p, "abddeff", 8)) 35 abort (); 36 }