https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111290
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ``` int main() { int t = c; c |= d / a; b = (c) >= ((e %= 0x6B1D8456) > (res ^= t)); printf("%d\n", res); } ``` gives -104 While: ``` int main() { c |= d / a; int t = c; b = (c) >= ((e %= 0x6B1D8456) > (res ^= t)); printf("%d\n", res); } ``` Gives -112 Both are valid way of representing the original code as there is no sequence point between them. Note C++11 makes this well defined.