aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfgcleanup.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-06-29 11:25:29 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-06-29 11:25:29 +0000
commit4e3e8a5f8175d06b2de55a6f45491fc484901370 (patch)
treeb04e0bef1db0be49b0cd9205bc42896a05b79fe4 /gcc/tree-cfgcleanup.c
parent6cd83bec4b76e19175a425b7e1841d9c5d0d164e (diff)
downloadgcc-4e3e8a5f8175d06b2de55a6f45491fc484901370.zip
gcc-4e3e8a5f8175d06b2de55a6f45491fc484901370.tar.gz
gcc-4e3e8a5f8175d06b2de55a6f45491fc484901370.tar.bz2
tree-cfg.c (group_case_labels_stmt): Return whether we changed anything.
2017-06-29 Richard Biener <rguenther@suse.de> * tree-cfg.c (group_case_labels_stmt): Return whether we changed anything. (group_case_labels): Likewise. (find_taken_edge): Push sanity checking on val to workers... (find_taken_edge_cond_expr): ... here (find_taken_edge_switch_expr): ... and here, handle cases with just a default label. * tree-cfg.h (group_case_labels_stmt): Adjust prototype. (group_case_labels): Likewise. * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When group_case_labels does anything cleanup the CFG again. From-SVN: r249780
Diffstat (limited to 'gcc/tree-cfgcleanup.c')
-rw-r--r--gcc/tree-cfgcleanup.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
index 8bb5e23..c904d0c 100644
--- a/gcc/tree-cfgcleanup.c
+++ b/gcc/tree-cfgcleanup.c
@@ -1205,7 +1205,8 @@ execute_cleanup_cfg_post_optimizing (void)
}
maybe_remove_unreachable_handlers ();
cleanup_dead_labels ();
- group_case_labels ();
+ if (group_case_labels ())
+ todo |= TODO_cleanup_cfg;
if ((flag_compare_debug_opt || flag_compare_debug)
&& flag_dump_final_insns)
{