https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90601
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
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);
^