From df0c5d2fd3798ebd5306c486334e34fdf3a24df1 Mon Sep 17 00:00:00 2001
From: Jeff Law <law@gcc.gnu.org>
Date: Tue, 10 Mar 1998 18:35:44 -0700
Subject: [PATCH] flow.c (find_basic_blocks_1): Keep the cfg accurate when
 removing an unconditional jump around deleted blocks.

P
        * flow.c (find_basic_blocks_1): Keep the cfg accurate when removing
        an unconditional jump around deleted blocks.

From-SVN: r18468
---
 gcc/flow.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gcc/flow.c b/gcc/flow.c
index 5daff7c36023..0bca7ac09999 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -811,6 +811,14 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p)
 			  && INSN_UID (label) != 0
 			  && BLOCK_NUM (label) == j)
 			{
+			  int k;
+
+			  /* The deleted blocks still show up in the cfg,
+			     so we must set basic_block_drops_in for blocks
+			     I to J inclusive to keep the cfg accurate.  */
+			  for (k = i; k <= j; k++)
+			    basic_block_drops_in[k] = 1;
+
 			  PUT_CODE (insn, NOTE);
 			  NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
 			  NOTE_SOURCE_FILE (insn) = 0;
-- 
GitLab