diff options
author | Peter Bergner <bergner@vnet.ibm.com> | 2017-07-27 09:05:14 -0500 |
---|---|---|
committer | Peter Bergner <bergner@gcc.gnu.org> | 2017-07-27 09:05:14 -0500 |
commit | 27c8b49bfc23b658bc8ea90e653f76e26e856c43 (patch) | |
tree | 9d23ea79d7b73f3ad409865e9a94e8ad7bab590c /gcc/tree-cfg.c | |
parent | b7675b592316cd5c2a972cb25c714fe85ec743c1 (diff) | |
download | gcc-27c8b49bfc23b658bc8ea90e653f76e26e856c43.zip gcc-27c8b49bfc23b658bc8ea90e653f76e26e856c43.tar.gz gcc-27c8b49bfc23b658bc8ea90e653f76e26e856c43.tar.bz2 |
re PR middle-end/81564 (ICE in group_case_labels_stmt())
gcc/
PR middle-end/81564
* tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.
gcc/testsuite/
PR middle-end/81564
* gcc.dg/pr81564.c: New test.
From-SVN: r250628
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 83e4ee6..f664ffe 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1701,8 +1701,9 @@ group_case_labels_stmt (gswitch *stmt) gcc_assert (base_case); base_bb = label_to_block (CASE_LABEL (base_case)); - /* Discard cases that have the same destination as the default case. */ - if (base_bb == default_bb) + /* Discard cases that have the same destination as the default case or + whose destiniation blocks have already been removed as unreachable. */ + if (base_bb == NULL || base_bb == default_bb) { i++; continue; |