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

--- Comment #2 from Iain Buclaw <ibuclaw at gdcproject dot org> ---
(In reply to Richard Biener from comment #1)
> Well, fix_trunc_expr isn't an lvalue you can pre-increment ... if D means
> to pre-increment a temporary (and not a) then it has to say so explicitely.
> Note GENERIC doesn't allow floating types on {PRE,POST}{DE,IN}CREMENT_EXPR
> just in case D does.
> 
> A C compiler says the code is invalid C:
> 
> t.c: In function ‘f’:
> t.c:3:12: error: lvalue required as increment operand
>      return ++(a += 1.0);
>             ^

This should be equivalent to '++(a += 1.0, a)'.  So just missing the getting
the lvalue out of 'a += 1.0' here, the post de/increment handler doesn't do
this unlike the binary assignment handler in the GENERIC builder visitor.

Reply via email to