------- Comment #5 from rguenth at gcc dot gnu dot org  2010-08-28 11:40 -------
Note that internally there is no such thing as an operator|= for fundamental
types, but things are treated like in C.  If you were in C,

 sz.b |= f (&sz, &sz, &sz, 3);

there is no sequence point before |= as it's not a function call - and I am
not sure your reading of C++ is correct that there is a function call
to operator|= and thus a sequence point before it.  In fact 5.17/7 says
that E1 op= E2 is equal to E1 = E1 op E2 except that E1 is evaluated only
once.

I can confirm though that EDG returns 1 for your example (which by our
reading would be an as valid result).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45437

Reply via email to