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

Reply via email to