diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/gimple-ssa-isolate-paths.c | 2 | ||||
-rw-r--r-- | gcc/passes.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr66794.c | 22 |
5 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a4c4b76..d385809 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2015-07-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/66794 + * passes.c (execute_function_todo): Assert that post-dominators + are not computed. + * gimple-ssa-isolate-paths.c (gimple_ssa_isolate_erroneous_paths): + Free post-dominators. + 2015-07-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.c (s390_init_frame_layout): Replace assertion diff --git a/gcc/gimple-ssa-isolate-paths.c b/gcc/gimple-ssa-isolate-paths.c index 8b98d76..b437182 100644 --- a/gcc/gimple-ssa-isolate-paths.c +++ b/gcc/gimple-ssa-isolate-paths.c @@ -488,10 +488,10 @@ gimple_ssa_isolate_erroneous_paths (void) /* We scramble the CFG and loop structures a bit, clean up appropriately. We really should incrementally update the loop structures, in theory it shouldn't be that hard. */ + free_dominance_info (CDI_POST_DOMINATORS); if (cfg_altered) { free_dominance_info (CDI_DOMINATORS); - free_dominance_info (CDI_POST_DOMINATORS); loops_state_set (LOOPS_NEED_FIXUP); return TODO_cleanup_cfg | TODO_update_ssa; } diff --git a/gcc/passes.c b/gcc/passes.c index 6292fd2..a2afb0a 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1929,6 +1929,7 @@ execute_function_todo (function *fn, void *data) if (flags & TODO_rebuild_cgraph_edges) cgraph_edge::rebuild_edges (); + gcc_assert (dom_info_state (fn, CDI_POST_DOMINATORS) == DOM_NONE); /* If we've seen errors do not bother running any verifiers. */ if (!seen_error ()) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7370e8f..7414562 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-07-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/66794 + * gcc.dg/torture/pr66794.c: New testcase. + 2015-07-08 Marek Polacek <polacek@redhat.com> PR c++/66748 diff --git a/gcc/testsuite/gcc.dg/torture/pr66794.c b/gcc/testsuite/gcc.dg/torture/pr66794.c new file mode 100644 index 0000000..03eeec7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr66794.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-w" } */ + +int a, *b, e; +static int **c = &b; + +struct +{ + int f0; +} d; + +int * +fn1 () +{ + int f, **g = &b; + e = a; + for (; a;) + for (; d.f0; d.f0++) + ; + *g = &f; + return *c; +} |