https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58315
--- Comment #22 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Aldy Hernandez from comment #21) > Let me see if I understood this correctly. We need a DSE/DCE pass right > before var-tracking that would eliminate the redundant `this' statements > right before a non debug statement. So, for something like this: First of all, these are GIMPLE statements, so doing anything on them can't be right before var-tracking, which is one of the last RTL passes. That said, I very much doubt you can DCE much here, just use -fdump-tree-*-all to see the uids of the this PARM_DECLs/VAR_DECLs, I bet most of them will be different. > > # DEBUG this => &cs > # DEBUG D#61 => &cs.D.73561 > # DEBUG this => D#61 > # DEBUG topol => 0 > # DEBUG D#60 => &D#61->D.71953 > # DEBUG this => D#60 > # DEBUG D#59 => &D#60->rows > # DEBUG this => D#59 > # DEBUG D#58 => &D#59->D.66859 > # DEBUG this => D#58 > # DEBUG D#57 => &D#58->_M_impl > # DEBUG this => D#57 > # DEBUG this => D#57 > # DEBUG this => D#57 > MEM[(struct _Vector_impl *)&cs]._M_start = 0B; > <other non DEBUG stmts>