https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58315
--- Comment #23 from Aldy Hernandez <aldyh at redhat dot com> --- On 02/24/2015 07:53 AM, jakub at gcc dot gnu.org wrote: > 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. Sorry, what I should've said was doing it right before expand, or at a place where gimple still exists. > 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. Absolutely, _all_ of them are different for that matter. I think what Richi was saying was that we could do a DSE type pass but take intervening stores to a DEBUG statement that have the same LHS name a debugger would see, and remove them based on that. So it wouldn't matter that we have different `this': # DEBUG this (for type "class foo") => D.1234 # DEBUG this (for type "class bar") => D.5678 # DEBUG this (for type "class biz") => D.9012 The first two stores are useless because you wouldn't be able to access them from a debugger. Although perhaps I am misunderstanding something (??).