(find_basic_blocks): When starting new basic block for a CALL_INSN in the presence of nonlocal labels...
(find_basic_blocks): When starting new basic block for a CALL_INSN in the presence of nonlocal labels, don't get confused with following CLOBBER. (flow_analysis): Use same logic as find_basic_block to see when the insn after a CALL_INSN starts a new basic block. From-SVN: r6097
This commit is contained in:
parent
b258707c7e
commit
a3579a47d1
17
gcc/flow.c
17
gcc/flow.c
@ -341,10 +341,17 @@ flow_analysis (f, nregs, file)
|
||||
|| (GET_RTX_CLASS (code) == 'i'
|
||||
&& (prev_code == JUMP_INSN
|
||||
|| (prev_code == CALL_INSN
|
||||
&& nonlocal_label_list != 0)
|
||||
&& nonlocal_label_list != 0
|
||||
/* Ignore a CLOBBER after a CALL_INSN here. */
|
||||
&& ! (code == INSN
|
||||
&& GET_CODE (PATTERN (insn)) == CLOBBER))
|
||||
|| prev_code == BARRIER)))
|
||||
i++;
|
||||
if (code != NOTE)
|
||||
if (code != NOTE
|
||||
/* Skip a CLOBBER after a CALL_INSN. See similar code in
|
||||
find_basic_blocks. */
|
||||
&& ! (prev_code == CALL_INSN
|
||||
&& code == INSN && GET_CODE (PATTERN (insn)) == CLOBBER))
|
||||
prev_code = code;
|
||||
}
|
||||
}
|
||||
@ -431,7 +438,11 @@ find_basic_blocks (f, nonlocal_label_list)
|
||||
|| (GET_RTX_CLASS (code) == 'i'
|
||||
&& (prev_code == JUMP_INSN
|
||||
|| (prev_code == CALL_INSN
|
||||
&& nonlocal_label_list != 0)
|
||||
&& nonlocal_label_list != 0
|
||||
/* Ignore if CLOBBER since we consider this
|
||||
part of the CALL. See below. */
|
||||
&& ! (code == INSN
|
||||
&& GET_CODE (PATTERN (insn)) == CLOBBER))
|
||||
|| prev_code == BARRIER)))
|
||||
{
|
||||
basic_block_head[++i] = insn;
|
||||
|
Loading…
Reference in New Issue
Block a user