http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60103
--- Comment #2 from Chengnian Sun <chengniansun at gmail dot com> --- (In reply to Andrew Pinski from comment #1) > I think C11 and C90/C99 have a different idea here. There is a relative > sequence point between the function call fn2 and the 0 but there is no > sequence point between the two assignments I think. > > Sequence points are not my area of expertise so I could be wrong but I do > know that C11/C++11 does get rid of the idea of sequence points and change > the name of it to something else. Thanks Andrew. After checking the standard, I see your point here. If the warning is not spurious, then IMHO gcc should also warn this with -O0.