https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88766

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |msebor at gcc dot gnu.org

--- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> ---
I don't disagree with the conclusion about the validity of this test case but
there are examples where GCC does treat a statement expression as an lvalue,
such as in the following:

  void f (void)
  { 
    int i = 0;
    ++__extension__({ (int)i; });   // accepted
    if (i != 1)                     // folded to false
      __builtin_abort ();
  }

Accepting this seems like a bug irrespective of whether statement expressions
themselves are ever lvalues.

GCC of course also accepts ++({ i; }).  Joseph's comment #2 suggests this
should be invalid as well but I might be reading too much into it.  In any
case, it would be helpful to make this clear in the manual.

Reply via email to