------- Comment #1 from pinskia at gcc dot gnu dot org 2010-08-28 03:34 ------- This code is undefined.
sz.b |= f(sz, sz, sz, 3); Has two setting of sz.b without a sequence point. That is it can be interrupted as either: bool temp = sz.b; bool temp1 = f(sz, sz, sz, 3); sz.b = temp | temp1; or: bool temp1 = sz.b; bool temp = f(sz, sz, sz, 3); sz.b = temp1 | temp; >is that it must be evaluated as if it were: No it must be evaluated as if it was: operator|=(a, f()) -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45437