In <stdlib.h>, there are /* Re-allocate the previously allocated block in PTR, making the new block SIZE bytes long. */ extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_malloc__ __attribute_warn_unused_result__; However, when a function is marked as mallloc-like, gcc assumes it will return an address which can alias something else. In case like #include <stdlib.h> int *p; p = malloc (4); *p = 0; p = realloc (p, 4); *p = 1; will have VOPs that do not prevent re-ordering of the two stores.
Changed in CVS.