/* Test whether store motion recognizes pure functions as potentially reading any memory. */ typedef __SIZE_TYPE__ size_t; extern void *memcpy (void *dest, const void *src, size_t n); extern size_t strlen (const char *s); extern int strcmp (const char *s1, const char *s2) __attribute__((pure)); char buf[50]; static void foo (void) { if (memcpy (buf, "abc", 4) != buf) abort (); if (strcmp (buf, "abc")) abort (); memcpy (buf, "abcdefgh", strlen ("abcdefgh") + 1); } int main (void) { foo (); return 0; }