diff options
author | Jim Wilson <wilson@cygnus.com> | 1998-09-21 13:59:47 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1998-09-21 06:59:47 -0700 |
commit | d06c63899f3052740b85775a104db5ff7921c845 (patch) | |
tree | 7bb5a61c6af1d00d8fb6a1b83b8b7d2dbe717b06 | |
parent | 0cfdd854df16a8bb6f36d9b5ed998a802038a223 (diff) | |
download | gcc-d06c63899f3052740b85775a104db5ff7921c845.zip gcc-d06c63899f3052740b85775a104db5ff7921c845.tar.gz gcc-d06c63899f3052740b85775a104db5ff7921c845.tar.bz2 |
Fix for g++ failure reported by Brendan.
* flow.c (find_basic_blocks): Delete check for in_libcall_block when
prev_code is a CALL_INSN. Change check for REG_RETVAL note to
use in_libcall_block.
(find_basic_blocks_1): Delete check for in_libcall_block when prev_code
is a CALL_INSN. If CALL_INSN and in_libcall_block, then change code
to INSN.
From-SVN: r22529
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/flow.c | 15 |
2 files changed, 19 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a61c4a..f383cd3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +Mon Sep 21 13:51:05 1998 Jim Wilson <wilson@cygnus.com> + + * flow.c (find_basic_blocks): Delete check for in_libcall_block when + prev_code is a CALL_INSN. Change check for REG_RETVAL note to + use in_libcall_block. + (find_basic_blocks_1): Delete check for in_libcall_block when prev_code + is a CALL_INSN. If CALL_INSN and in_libcall_block, then change code + to INSN. + Mon Sep 21 14:02:23 1998 * i386.h: (TARGET_SWITCHES) Improve doc for align-double. Fix @@ -331,12 +331,13 @@ find_basic_blocks (f, nregs, file, live_reachable_p) || (GET_RTX_CLASS (code) == 'i' && (prev_code == JUMP_INSN || (prev_code == CALL_INSN - && (nonlocal_label_list != 0 || eh_region) - && ! in_libcall_block) + && (nonlocal_label_list != 0 || eh_region)) || prev_code == BARRIER))) i++; - if (code == CALL_INSN && find_reg_note (insn, REG_RETVAL, NULL_RTX)) + /* We change the code of the CALL_INSN, so that it won't start a + new block. */ + if (code == CALL_INSN && in_libcall_block) code = INSN; if (code != NOTE) @@ -456,8 +457,7 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p) || (GET_RTX_CLASS (code) == 'i' && (prev_code == JUMP_INSN || (prev_code == CALL_INSN - && (nonlocal_label_list != 0 || eh_note) - && ! in_libcall_block) + && (nonlocal_label_list != 0 || eh_note)) || prev_code == BARRIER))) { basic_block_head[++i] = insn; @@ -519,6 +519,11 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p) NOTE_BLOCK_NUMBER (XEXP (eh_note, 0)); BLOCK_NUM (insn) = i; + /* We change the code of the CALL_INSN, so that it won't start a + new block. */ + if (code == CALL_INSN && in_libcall_block) + code = INSN; + if (code != NOTE) prev_code = code; |