This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: remaining libjava/verify_local_live_at_start failures
- From: John Wehle <john at feith dot com>
- To: hubicka at atrey dot karlin dot mff dot cuni dot cz
- Cc: hp at bitrange dot com, gcc at gcc dot gnu dot org
- Date: Tue, 26 Mar 2002 14:17:13 -0500 (EST)
- Subject: Re: remaining libjava/verify_local_live_at_start failures
>> 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.
I wasn't refering to unreachable code removal. As I recall,
cleanup_cfg interacts with dead code removal as follows:
BB 1
a = b + c
if (a > 10)
then BB 3
BB 2
d = a - e
BB 3
d = b / c
...
1) calculate_global_regs_live decides that results of "d" computed
in BB 2 isn't used.
2) update_life_info calls propagate_block with PROP_KILL_DEAD_CODE
set which removes the contents of BB 2.
3) cleanup_cfg kills the conditional jump at the end of BB 1.
4) calculate_global_regs_live needs to be called again since
"a" may not be needed.
Notice that unreachable code didn't enter into the picture.
> I guess Richard Kenner's dead store removal introduced the problem.
Sounds like you're on the trail.
-- John
-------------------------------------------------------------------------
| Feith Systems | Voice: 1-215-646-8000 | Email: john@feith.com |
| John Wehle | Fax: 1-215-540-5495 | |
-------------------------------------------------------------------------