mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-13 00:21:18 +08:00
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
This commit is contained in:
parent
0cfdd854df
commit
d06c63899f
@ -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
|
||||
|
15
gcc/flow.c
15
gcc/flow.c
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user