https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124229
--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
This has something to do with us reusing typedefs in tsubst:
/* Reuse typedefs. We need to do this to handle dependent attributes,
such as attribute aligned. */
if (TYPE_P (t)
&& typedef_variant_p (t))
where we get
<splice_scope 0x7fffe4da5888 msg_type type_0 type_6 VOID
align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffe4da57e0>
and return it instead of substituting, and then crashing. We should instead
retrieve_local_specialization and grab the one that tsubst_splice_scope gave
us.