This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Bug in CFG or CD-DCE?
- From: Steven Bosscher <stevenb at suse dot de>
- To: Diego Novillo <dnovillo at redhat dot com>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Tue, 13 Jul 2004 09:46:40 +0200
- Subject: Re: Bug in CFG or CD-DCE?
- Organization: SUSE Labs
- References: <1089676479.3222.157.camel@localhost.localdomain>
On Tuesday 13 July 2004 01:54, Diego Novillo wrote:
> --------------------------------------------------------------------
> <bb 0>:
> T.66_61 = -000000001; [LIVE]
> T.67_62 = T.66_61 & 1; [LIVE]
> if (T.67_62 != 0) goto <L39>; else goto <L38>; [LIVE]
>
> <L39>:;
> i_3 = 0; [DEAD]
> goto <bb 12> (<L26>);
>
> <L38>:;
> i_55 = 0; [DEAD]
>
> [ ... ]
>
> <L40>:;
> <D1756>_63 = 0; [DEAD]
>
> <L22>:;
> exit (0); [LIVE]
>
> <L26>:;
> T.71_52 = -000000001; [DEAD XXX]
> T.72_53 = T.71_52 & 1; [DEAD XXX]
> if (T.72_53 != 0) goto <L41>; else goto <L40>; [DEAD XXX]
>
> <L41>:;
> <D1756>_47 = 0; [DEAD]
> goto <bb 10> (<L22>); <-- This is a fallthru edge (?)
> -------------------------------------------------------------------
>
> What is happening here is that once we mark 'exit (0)' live, we go to
> its CD parent (L41) and try to mark its last control statement as live.
> Strangely enough, that block has a FALLTHRU edge, so we mark nothing.
Whether there's a FALLTHRU edge or not is irrelevant. Block L22
is not control dependent on block L41, itt is control dependent on
block L26. Got a test case?
Gr.
Steven