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

--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
I suspect it's due to us creating *&TARGET_EXPR <D.2704, {}> in 

      if (is_really_empty_class (type, /*ignore_vptr*/true))
        {
          /* Avoid copying empty classes, but ensure op= returns an lvalue even
             if the object argument isn't one.  */
          to = force_lvalue (to, complain);
          val = build2 (COMPOUND_EXPR, type, arg, to);
          suppress_warning (val, OPT_Wunused);
        }

where we want an lvalue, but then the *& are removed somewhere and we end up
with a prvalue.

Reply via email to