Commit 1f70491b by Andrew Pinski Committed by Andrew Pinski

re PR tree-optimization/28624 (latent segfault in remove_phi_node)

2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/28624
        * tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary
        bitmap for EXECUTE_IF_SET_IN_BITMAP.

From-SVN: r119802
parent 0890b981
2006-12-12 Andrew Pinski <andrew_pinski@playstation.sony.com> 2006-12-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/28624
* tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary
bitmap for EXECUTE_IF_SET_IN_BITMAP.
2006-12-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/28436 PR tree-opt/28436
* tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ... * tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
(DECL_GIMPLE_REG_P): This. (DECL_GIMPLE_REG_P): This.
......
...@@ -2466,6 +2466,7 @@ static unsigned int ...@@ -2466,6 +2466,7 @@ static unsigned int
eliminate_degenerate_phis (void) eliminate_degenerate_phis (void)
{ {
bitmap interesting_names; bitmap interesting_names;
bitmap interesting_names1;
/* Bitmap of blocks which need EH information updated. We can not /* Bitmap of blocks which need EH information updated. We can not
update it on-the-fly as doing so invalidates the dominator tree. */ update it on-the-fly as doing so invalidates the dominator tree. */
...@@ -2482,6 +2483,7 @@ eliminate_degenerate_phis (void) ...@@ -2482,6 +2483,7 @@ eliminate_degenerate_phis (void)
Experiments have show we generally get better compilation Experiments have show we generally get better compilation
time behavior with bitmaps rather than sbitmaps. */ time behavior with bitmaps rather than sbitmaps. */
interesting_names = BITMAP_ALLOC (NULL); interesting_names = BITMAP_ALLOC (NULL);
interesting_names1 = BITMAP_ALLOC (NULL);
/* First phase. Eliminate degenerate PHIs via a dominator /* First phase. Eliminate degenerate PHIs via a dominator
walk of the CFG. walk of the CFG.
...@@ -2503,7 +2505,12 @@ eliminate_degenerate_phis (void) ...@@ -2503,7 +2505,12 @@ eliminate_degenerate_phis (void)
unsigned int i; unsigned int i;
bitmap_iterator bi; bitmap_iterator bi;
EXECUTE_IF_SET_IN_BITMAP (interesting_names, 0, i, bi) /* EXECUTE_IF_SET_IN_BITMAP does not like its bitmap
changed during the loop. Copy it to another bitmap and
use that. */
bitmap_copy (interesting_names1, interesting_names);
EXECUTE_IF_SET_IN_BITMAP (interesting_names1, 0, i, bi)
{ {
tree name = ssa_name (i); tree name = ssa_name (i);
...@@ -2524,6 +2531,7 @@ eliminate_degenerate_phis (void) ...@@ -2524,6 +2531,7 @@ eliminate_degenerate_phis (void)
} }
BITMAP_FREE (interesting_names); BITMAP_FREE (interesting_names);
BITMAP_FREE (interesting_names1);
if (cfg_altered) if (cfg_altered)
free_dominance_info (CDI_DOMINATORS); free_dominance_info (CDI_DOMINATORS);
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment