http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48814
--- Comment #8 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2011-05-02 16:24:01 UTC --- On Mon, 2 May 2011, rguenth at gcc dot gnu.org wrote: > The side-effects yes, but the read in count++ happens at either before > or after incr is executed. At least that is my reading of undefined > evaluation order. Does the sequence point before entering a function > make that evaluation order suddenly defined? The sequence point wording in C99 and C++03 is inherently confusing and doesn't go into much detail about what may or may not interleave, but what C1x and C++0x make explicit is that the evaluation of ++, -- and compound assignment do not interleave with an indeterminately-sequenced function call (and so they may not act by calling the indeterminately sequenced function between the read and the write of the operand being updated). You can argue about what exactly C99 and C++03 require (and so about whether there is a regression), but there is quite clearly now a bug to be fixed (and the fix should not depend on the language version).