Commit d06c6389 by Jim Wilson Committed by Jim Wilson

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
parent 0cfdd854
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 Mon Sep 21 14:02:23 1998
* i386.h: (TARGET_SWITCHES) Improve doc for align-double. Fix * i386.h: (TARGET_SWITCHES) Improve doc for align-double. Fix
......
...@@ -331,12 +331,13 @@ find_basic_blocks (f, nregs, file, live_reachable_p) ...@@ -331,12 +331,13 @@ find_basic_blocks (f, nregs, file, live_reachable_p)
|| (GET_RTX_CLASS (code) == 'i' || (GET_RTX_CLASS (code) == 'i'
&& (prev_code == JUMP_INSN && (prev_code == JUMP_INSN
|| (prev_code == CALL_INSN || (prev_code == CALL_INSN
&& (nonlocal_label_list != 0 || eh_region) && (nonlocal_label_list != 0 || eh_region))
&& ! in_libcall_block)
|| prev_code == BARRIER))) || prev_code == BARRIER)))
i++; 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; code = INSN;
if (code != NOTE) if (code != NOTE)
...@@ -456,8 +457,7 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p) ...@@ -456,8 +457,7 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p)
|| (GET_RTX_CLASS (code) == 'i' || (GET_RTX_CLASS (code) == 'i'
&& (prev_code == JUMP_INSN && (prev_code == JUMP_INSN
|| (prev_code == CALL_INSN || (prev_code == CALL_INSN
&& (nonlocal_label_list != 0 || eh_note) && (nonlocal_label_list != 0 || eh_note))
&& ! in_libcall_block)
|| prev_code == BARRIER))) || prev_code == BARRIER)))
{ {
basic_block_head[++i] = insn; basic_block_head[++i] = insn;
...@@ -519,6 +519,11 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p) ...@@ -519,6 +519,11 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p)
NOTE_BLOCK_NUMBER (XEXP (eh_note, 0)); NOTE_BLOCK_NUMBER (XEXP (eh_note, 0));
BLOCK_NUM (insn) = i; 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) if (code != NOTE)
prev_code = code; prev_code = code;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment