https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123621
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I think that was a different case.
In this case we are trying to mangle something created by
tsubst_qualified_id -> finish_qualified_id_expr -> finish_qualified_id_expr ->
finish_non_static_data_member and that uses build_dummy_object.
And reflect.cc doesn't want to say that
((struct Y *) <<< Unknown tree: void_cst >>>)->name (i.e. ((struct Y *)
nullptr)->name) is an object.
I guess that is ok.
So probably what is not ok is that we try to tsubst
<<< Unknown tree: reflect_expr
<<< Unknown tree: scope_ref
<<< Unknown tree: template_type_parm >>>
name >>> >>>;
as something with build_dummy_object in it. Instead it should be tsubsted
probably just as a SCOPE_REF with Y and the FIELD_DECL (of course only if it is
REFLECT_EXPR operand).