Because the function also increments the push->cur pointer, it's a subtle but real difference:
gcc-4.7:
u32 ret = func(); // May change push->cur ptr *push->cur = ret; push->cur++;
gcc-4.8: u32 *ptr = push->cur; push->cur++;
*ptr = func(); // Already sees the push->cur ptr
I'm not a language expert, so no idea if I'm right, but it seems the updated gcc-4.8 behavior is wrong here.
Because the function also increments the push->cur pointer, it's a subtle but real difference:
gcc-4.7:
u32 ret = func(); // May change push->cur ptr
*push->cur = ret;
push->cur++;
gcc-4.8:
u32 *ptr = push->cur;
push->cur++;
*ptr = func(); // Already sees the push->cur ptr
I'm not a language expert, so no idea if I'm right, but it seems the updated gcc-4.8 behavior is wrong here.