https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68978
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org --- Comment #2 from Patrick Palka <ppalka at gcc dot gnu.org> --- It looks like lvalue_kind() does not handle MODOP_EXPRs correctly. It does not consider (i *= radix) (encoded at that point as an unlowered MODOP_EXPR) to be an lvalue. I am testing this fix: diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index ae176d0..ac22e45 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -186,6 +186,7 @@ lvalue_kind (const_tree ref) break; case MODIFY_EXPR: + case MODOP_EXPR: case TYPEID_EXPR: return clk_ordinary;