http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2013-01-30 02:11:46 UTC --- (In reply to comment #1) > *_jit->pc.ui++ = i0 - (_jit->pc.w + 4); > > You have a sequence point issue. This is like doing: > *i++ = i0 - (i + 4); The reason why it is the same is because pc is an union: union { jit_uint8_t *uc; jit_uint16_t *us; jit_uint32_t *ui; jit_uint64_t *ul; jit_word_t w; } pc; So any access/set to ui also accesses/sets w.