diff options
author | Jeff Law <law@gcc.gnu.org> | 1998-03-10 18:35:44 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-03-10 18:35:44 -0700 |
commit | df0c5d2fd3798ebd5306c486334e34fdf3a24df1 (patch) | |
tree | 70a07681a159cd35503605f5d2fa2901b28c79ea /gcc/flow.c | |
parent | 832544bd032728cb970822ea91e562b1bad62d22 (diff) | |
download | gcc-df0c5d2fd3798ebd5306c486334e34fdf3a24df1.zip gcc-df0c5d2fd3798ebd5306c486334e34fdf3a24df1.tar.gz gcc-df0c5d2fd3798ebd5306c486334e34fdf3a24df1.tar.bz2 |
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
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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; |