------- 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