https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104532
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2022-02-15 CC| |cltang at gcc dot gnu.org, | |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Started with r12-5835-g0ab29cf0bb68960c1f87405f14b4fb2109254e2f I guess the if (c_parser_next_token_is (parser, CPP_DEREF)) t = build_simple_mem_ref (t); is wrong, CPP_DEREF handling elsewhere calls expr = convert_lvalue_to_rvalue (expr_loc, expr, true, false); and uses expr.value = build_component_ref (op_loc, build_indirect_ref (op_loc, expr.value, RO_ARROW), ident, comp_loc); So I think we should do that convert_lvalue_to_rvalue and build_indirect_ref instead of build_simple_mem_ref.