Add malloc predictor (PR middle-end/83023).
[official-gcc.git] / gcc / testsuite / gcc.dg / string-opt-1.c
blob7945ef39c57725956031eb668f2de122fecf2ad8
1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
4 char *buffer;
5 char *test;
7 #define SIZE 100
9 char *
10 __attribute__((noinline))
11 my_memcpy (char *d, char *s, unsigned l)
13 return __builtin_memcpy (d, s, l);
16 char *
17 __attribute__((noinline))
18 my_mempcpy (char *d, char *s, unsigned l)
20 return __builtin_mempcpy (d, s, l);
23 void
24 run_test (char *d, char *s, unsigned l)
26 char *r = my_mempcpy (d, s, l);
27 if (r != d + l)
28 __builtin_abort ();
30 r = my_memcpy (d, s, l);
31 if (r != d)
32 __builtin_abort ();
35 int
36 main (void)
38 const char* const foo = "hello world";
39 unsigned l = __builtin_strlen (foo) + 1;
41 buffer = __builtin_malloc (SIZE);
42 __builtin_memcpy (buffer, foo, l);
43 test = __builtin_malloc (SIZE);
45 run_test (test, buffer, l);
47 return 0;
50 /* { dg-final { scan-assembler "mempcpy" } } */
51 /* { dg-final { scan-assembler "memcpy" } } */