1 /* Test whether store motion recognizes pure functions as potentially reading
2    any memory.  */
3 
4 typedef __SIZE_TYPE__ size_t;
5 extern void *memcpy (void *dest, const void *src, size_t n);
6 extern size_t strlen (const char *s);
7 extern int strcmp (const char *s1, const char *s2) __attribute__((pure));
8 
9 char buf[50];
10 
foo(void)11 static void foo (void)
12 {
13   if (memcpy (buf, "abc", 4) != buf) abort ();
14   if (strcmp (buf, "abc")) abort ();
15   memcpy (buf, "abcdefgh", strlen ("abcdefgh") + 1);
16 }
17 
main(void)18 int main (void)
19 {
20   foo ();
21   return 0;
22 }
23