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: remaining libjava/verify_local_live_at_start failures


> > The problem is that global liveness is not recomputed after dead code removal
> > keeping it in inconsistent state.
> 
> In the past this has been caused by cleanup_cfg making a change
> and returning zero (indicating that nothing changed).
> update_life_info has:
> 
>   for ( ; ; )
>     {
> 
>       ...
>       if (! changed || ! cleanup_cfg (CLEANUP_EXPENSIVE))
>         break;
>     }
> 
> So as long as cleanup_cfg returns non-zero update_life_info will
> DTRT by iterating until global liveness / dead code removal converges.

It is not unreachable code removal, it is dead code removal that causes
problem. It reproduces if you remove the flag allowing CFG changes as well.
Nothing is wrong with your patch, I guess Richard Kenner's dead store removal
introduced the problem.

Honza
> 
> -- John
> -------------------------------------------------------------------------
> |   Feith Systems  |   Voice: 1-215-646-8000  |  Email: john@feith.com  |
> |    John Wehle    |     Fax: 1-215-540-5495  |                         |
> -------------------------------------------------------------------------


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