| /* Test whether store motion recognizes pure functions as potentially reading |
| any memory. */ |
| |
| typedef __SIZE_TYPE__ size_t; |
| extern void abort (void); |
| 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; |
| } |