modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/builtins/memmove.c (about) 1 /* Copyright (C) 2003, 2004 Free Software Foundation. 2 3 Ensure builtin memmove and bcopy perform correctly. 4 5 Written by Jakub Jelinek, 4/26/2003. */ 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 const char s1[] = "123"; 14 char p[32] = ""; 15 16 static const struct foo 17 { 18 char *s; 19 double d; 20 long l; 21 } foo[] = 22 { 23 { "hello world1", 3.14159, 101L }, 24 { "hello world2", 3.14159, 102L }, 25 { "hello world3", 3.14159, 103L }, 26 { "hello world4", 3.14159, 104L }, 27 { "hello world5", 3.14159, 105L }, 28 { "hello world6", 3.14159, 106L } 29 }; 30 31 static const struct bar 32 { 33 char *s; 34 const struct foo f[3]; 35 } bar[] = 36 { 37 { 38 "hello world10", 39 { 40 { "hello1", 3.14159, 201L }, 41 { "hello2", 3.14159, 202L }, 42 { "hello3", 3.14159, 203L }, 43 } 44 }, 45 { 46 "hello world11", 47 { 48 { "hello4", 3.14159, 204L }, 49 { "hello5", 3.14159, 205L }, 50 { "hello6", 3.14159, 206L }, 51 } 52 } 53 }; 54 55 static const int baz[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; 56 57 void 58 main_test (void) 59 { 60 const char *s; 61 struct foo f1[sizeof foo/sizeof*foo]; 62 struct bar b1[sizeof bar/sizeof*bar]; 63 int bz[sizeof baz/sizeof*baz]; 64 65 if (memmove (f1, foo, sizeof (foo)) != f1 || memcmp (f1, foo, sizeof (foo))) 66 abort (); 67 if (memmove (b1, bar, sizeof (bar)) != b1 || memcmp (b1, bar, sizeof (bar))) 68 abort (); 69 bcopy (baz, bz, sizeof (baz)); 70 if (memcmp (bz, baz, sizeof (baz))) 71 abort (); 72 73 if (memmove (p, "abcde", 6) != p || memcmp (p, "abcde", 6)) 74 abort (); 75 s = s1; 76 if (memmove (p + 2, ++s, 0) != p + 2 || memcmp (p, "abcde", 6) || s != s1 + 1) 77 abort (); 78 if (__builtin_memmove (p + 3, "", 1) != p + 3 || memcmp (p, "abc\0e", 6)) 79 abort (); 80 bcopy ("fghijk", p + 2, 4); 81 if (memcmp (p, "abfghi", 7)) 82 abort (); 83 s = s1 + 1; 84 bcopy (s++, p + 1, 0); 85 if (memcmp (p, "abfghi", 7) || s != s1 + 2) 86 abort (); 87 __builtin_bcopy ("ABCDE", p + 4, 1); 88 if (memcmp (p, "abfgAi", 7)) 89 abort (); 90 }