Patchwork [5/8] Drop an incorrect assert

login
register
mail settings
Submitter Alexander Monakov
Date Aug. 3, 2011, 3:30 p.m.
Message ID <1312385438-6273-6-git-send-email-amonakov@ispras.ru>
Download mbox | patch
Permalink /patch/108280/
State New
Headers show

Comments

Alexander Monakov - Aug. 3, 2011, 3:30 p.m.
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.
Vladimir Makarov - Aug. 10, 2011, 7:48 p.m.
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.

Patch

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;
 }