Message ID | 1312385438-6273-6-git-send-email-amonakov@ispras.ru |
---|---|
State | New |
Headers | show |
On 08/03/2011 11:30 AM, Alexander Monakov wrote: > From: Dmitry Melnik<dm@ispras.ru> > > This fixes a bug caused by trying to initialize BB_AV_SET of a newly generated > jump. It assumes that jump is only generated in new bb, while it can be > replaced in same BB by try_redirect_by_replacing_jump, if jump was conditional > and was pointing to the same BB by its both edges (this may happen due to > predication, when moving all insns up from a "diamond"). > > 2011-08-04 Dmitry Melnik<dm@ispras.ru> > > * sel-sched-ir.c (invalidate_av_set): Remove the assert. > Ok, thanks.
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index f22e637..dd8b3da 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -4284,14 +4284,13 @@ free_lv_sets (void) free_lv_set (bb); } -/* Initialize an invalid AV_SET for BB. - This set will be updated next time compute_av () process BB. */ +/* Mark AV_SET for BB as invalid, so this set will be updated the next time + compute_av() processes BB. This function is called when creating new basic + blocks, as well as for blocks (either new or existing) where new jumps are + created when the control flow is being updated. */ static void invalidate_av_set (basic_block bb) { - gcc_assert (BB_AV_LEVEL (bb) <= 0 - && BB_AV_SET (bb) == NULL); - BB_AV_LEVEL (bb) = -1; }
From: Dmitry Melnik <dm@ispras.ru> This fixes a bug caused by trying to initialize BB_AV_SET of a newly generated jump. It assumes that jump is only generated in new bb, while it can be replaced in same BB by try_redirect_by_replacing_jump, if jump was conditional and was pointing to the same BB by its both edges (this may happen due to predication, when moving all insns up from a "diamond"). 2011-08-04 Dmitry Melnik <dm@ispras.ru> * sel-sched-ir.c (invalidate_av_set): Remove the assert.