https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105145

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2022-04-05
             Status|UNCONFIRMED                 |NEW
                 CC|                            |rsandifo at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
There is no infrastructure to retain debug information for memory contents
(which includes address-taken local variables which can eventually become
registers later).  IIRC Richard Sandiford developed some prototype patches to
try improve this a bit a few years ago.

In particular here we have before DSE1

  [t.c:11:8] l_158(address-taken) = [t.c:11:16] &l_141(address-taken);
...
  l_158(address-taken) ={v} {CLOBBER(eol)};

and l_158 is otherwise unused so DSE elides the store.  If we'd call
update_address_taken before DSE we'd rewrite l_158 into SSA form and
then DSE/DCE would retain a # DEBUG stmt for the value.  In this case
it is FRE1 which elides all uses of the variable.

Reply via email to