https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100209
--- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> --- During cxx_eval_indirect_ref for *(const struct C &) (const struct C *) (struct C *) ((struct B *) this + -4); constant evaluation of the pointee yields &D.2217.D.2106 + -4 where D.2217 is a temporary of type C and D.2106 is the FIELD_DECL for the base B<C>. The problem seems to be that cxx_fold_indirect_ref doesn't know how to fold this second expression to just &D.2217