diff options
author | Peter Bergner <bergner@vnet.ibm.com> | 2017-05-12 12:13:07 -0500 |
---|---|---|
committer | Peter Bergner <bergner@gcc.gnu.org> | 2017-05-12 12:13:07 -0500 |
commit | 284d1f76e9b9411a30c43d3d366855debdb31f6a (patch) | |
tree | 2e623e97ac95c7598de3badd1c5781a98afa90e9 /gcc/tree-cfg.c | |
parent | da55a299c5159a622bcf04bf3f97707f5335bcad (diff) | |
download | gcc-284d1f76e9b9411a30c43d3d366855debdb31f6a.zip gcc-284d1f76e9b9411a30c43d3d366855debdb31f6a.tar.gz gcc-284d1f76e9b9411a30c43d3d366855debdb31f6a.tar.bz2 |
re PR middle-end/80707 (r247844 causes error: extra outgoing edge)
gcc/
PR middle-end/80707
* tree-cfg.c: Remove cfg edges of unreachable case statements.
gcc/testsuite/
PR middle-end/80707
* g++.dg/pr80707.C: New test.
From-SVN: r247984
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 77cb3d6..72c5284 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1684,6 +1684,10 @@ group_case_labels_stmt (gswitch *stmt) || (EDGE_COUNT (base_bb->succs) == 0 && gimple_seq_unreachable_p (bb_seq (base_bb)))) { + edge e; + if (base_bb != default_bb + && (e = find_edge (gimple_bb (stmt), base_bb)) != NULL) + remove_edge_and_dominated_blocks (e); gimple_switch_set_label (stmt, i, NULL_TREE); i++; new_size--; |