This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Bug in CFG or CD-DCE?


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]