Hi,

On Fri, 2 Dec 2011, Richard Guenther wrote:

> > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> > 
> > 2011-12-01  Jakub Jelinek  <ja...@redhat.com>
> > 
> >     PR debug/50317
> >     * tree-ssa-dce.c (remove_dead_stmt): Add a debug stmt when removing
> >     as unnecessary a store to a variable with gimple reg type.
> >     * tree-ssa-live.c (remove_unused_locals): Clear TREE_ADDRESSABLE bit
> >     on local unreferenced variables.
> 
> This change seems wrong.  We are turning valid gimple
> 
> # DEBUG D#2 => transfer.0  [with addres taken]
> 
> into invalid one
> 
> # DEBUG D#2 => transfer.0  [without address taken]

Why would it be invalid?  It's meaningful to talk about a full object and 
references to it even without having its address taken.  Normal 
loads/stores do the same.

> once you update that stmt with update_stmt you'll get an SSA operand
> for transfer.0

That's the thing which should be fixed then.

> Why do this in remove_unused_locals and not in update_address_taken?

Another walk over all statements just for this?  Meh.

> Or, why do it at all?

The debug machinery seems to be unhappy about variables that are address 
taken.

> I have a SSA operand checking patch that catches this now ...


Ciao,
Michael.

Reply via email to