[PATCH] New switch optimization pass (PR tree-optimization/54742)
Steve Ellcey
sellcey@imgtec.com
Tue May 14 21:15:00 GMT 2013
While Jeff works on the threader, I was wondering if I could get approval for
just the dominance.c part of the patch. This would allow me to use my pass as
a dynamically loaded optimization pass. But without this change to dominance.c,
the compiler aborts in iterate_fix_dominators when I do that.
Steve Ellcey
sellcey@imgtec.com
2013-05-14 Steve Ellcey <sellcey@imgtec.com>
* dominance.c (iterate_fix_dominators): Add null check.
diff --git a/gcc/dominance.c b/gcc/dominance.c
index 5c96dad..d858ad1 100644
--- a/gcc/dominance.c
+++ b/gcc/dominance.c
@@ -1251,6 +1251,7 @@ iterate_fix_dominators (enum cdi_direction dir, vec<basic_block> bbs,
struct pointer_map_t *map;
int *parent, *son, *brother;
unsigned int dir_index = dom_convert_dir_to_idx (dir);
+ void **slot;
/* We only support updating dominators. There are some problems with
updating postdominators (need to add fake edges from infinite loops
@@ -1357,7 +1358,10 @@ iterate_fix_dominators (enum cdi_direction dir, vec<basic_block> bbs,
if (dom == bb)
continue;
- dom_i = (size_t) *pointer_map_contains (map, dom);
+ slot = pointer_map_contains (map, dom);
+ if (slot == NULL)
+ continue;
+ dom_i = (size_t) *slot;
/* Do not include parallel edges to G. */
if (!bitmap_set_bit ((bitmap) g->vertices[dom_i].data, i))
More information about the Gcc-patches
mailing list