From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2140) id 36BCD384F03D; Sat, 10 Jul 2021 09:43:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 36BCD384F03D Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Alexandre Oliva To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/aoliva/heads/testme)] move unreachable user labels to entry point X-Act-Checkin: gcc X-Git-Author: Alexandre Oliva X-Git-Refname: refs/users/aoliva/heads/testme X-Git-Oldrev: 19f8aced2479ced4095cb53f0a099d6c107f708b X-Git-Newrev: e15b2c5da846bf082957c4240ff386b8f8154728 Message-Id: <20210710094350.36BCD384F03D@sourceware.org> Date: Sat, 10 Jul 2021 09:43:50 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Jul 2021 09:43:50 -0000 https://gcc.gnu.org/g:e15b2c5da846bf082957c4240ff386b8f8154728 commit e15b2c5da846bf082957c4240ff386b8f8154728 Author: Alexandre Oliva Date: Fri Jul 9 19:54:44 2021 -0300 move unreachable user labels to entry point Diff: --- gcc/tree-cfg.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 1f0f4a2c6eb..f6f005f10a9 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -2300,13 +2300,11 @@ remove_bb (basic_block bb) FORCED_LABEL (gimple_label_label (label_stmt)) = 1; } - new_bb = bb->prev_bb; - /* Don't move any labels into ENTRY block. */ - if (new_bb == ENTRY_BLOCK_PTR_FOR_FN (cfun)) - { - new_bb = single_succ (new_bb); - gcc_assert (new_bb != bb); - } + /* We have to move the unreachable label somewhere. + Moving it to the entry block makes sure it's moved at + most once, and avoids messing with anonymous landing + pad labels. */ + new_bb = single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun)); if ((unsigned) bb->index < bb_to_omp_idx.length () && ((unsigned) new_bb->index >= bb_to_omp_idx.length () || (bb_to_omp_idx[bb->index] @@ -2316,7 +2314,6 @@ remove_bb (basic_block bb) into the right OMP region. */ unsigned int i; int idx; - new_bb = NULL; FOR_EACH_VEC_ELT (bb_to_omp_idx, i, idx) if (i >= NUM_FIXED_BLOCKS && idx == bb_to_omp_idx[bb->index] @@ -2325,11 +2322,6 @@ remove_bb (basic_block bb) new_bb = BASIC_BLOCK_FOR_FN (cfun, i); break; } - if (new_bb == NULL) - { - new_bb = single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun)); - gcc_assert (new_bb != bb); - } } new_gsi = gsi_after_labels (new_bb); gsi_remove (&i, false);