https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79205
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So the bug is obviously **t, i.e. double indirection when only one should be used. The problem is that the D.2164 artificial variable (the "e" variable from [dcl.decomp]) appears both in its own DECL_EXPR and among block vars, and has DECL_INITIAL initially PARM_DECL t, which is an invisiref parameter that genericization wants to turn into a reference. First we walk it during tree walk of the DECL_EXPR and change the DECL_INITIAL into INDIRECT_REF <PARM_DECL t> (correct). And then we walk it again and replace it again with INDIRECT_REF <INDIRECT_REF <PARM_DECL t>> (wrong).