[Bug c++/79205] ICE in create_tmp_var, at gimple-expr.c:473

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jan 24 09:42:00 GMT 2017


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).


More information about the Gcc-bugs mailing list