ia64.c (emit_all_insn_group_barriers): Flush state at barrier insns.
* config/ia64/ia64.c (emit_all_insn_group_barriers): Flush state at barrier insns. Emit stop bits before barriers. From-SVN: r45102
This commit is contained in:
parent
687eccc06e
commit
bd7b9a0f96
2 changed files with 20 additions and 5 deletions
|
@ -1,5 +1,8 @@
|
|||
2001-08-21 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/ia64/ia64.c (emit_all_insn_group_barriers): Flush state
|
||||
at barrier insns. Emit stop bits before barriers.
|
||||
|
||||
* flow.c (flow_find_cross_jump): Don't consider unconditional
|
||||
return insns for commoning.
|
||||
|
||||
|
|
|
@ -4811,13 +4811,25 @@ emit_all_insn_group_barriers (dump, insns)
|
|||
|
||||
for (insn = insns; insn; insn = NEXT_INSN (insn))
|
||||
{
|
||||
if (GET_CODE (insn) == INSN
|
||||
&& GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE
|
||||
&& XINT (PATTERN (insn), 1) == 2)
|
||||
init_insn_group_barriers ();
|
||||
if (GET_CODE (insn) == BARRIER)
|
||||
{
|
||||
rtx last = prev_active_insn (insn);
|
||||
|
||||
if (! last)
|
||||
continue;
|
||||
if (GET_CODE (last) == JUMP_INSN
|
||||
&& GET_CODE (PATTERN (last)) == ADDR_DIFF_VEC)
|
||||
last = prev_active_insn (last);
|
||||
if (recog_memoized (last) != CODE_FOR_insn_group_barrier)
|
||||
emit_insn_after (gen_insn_group_barrier (GEN_INT (3)), last);
|
||||
|
||||
init_insn_group_barriers ();
|
||||
}
|
||||
else if (INSN_P (insn))
|
||||
{
|
||||
if (group_barrier_needed_p (insn))
|
||||
if (recog_memoized (insn) == CODE_FOR_insn_group_barrier)
|
||||
init_insn_group_barriers ();
|
||||
else if (group_barrier_needed_p (insn))
|
||||
{
|
||||
emit_insn_before (gen_insn_group_barrier (GEN_INT (3)), insn);
|
||||
init_insn_group_barriers ();
|
||||
|
|
Loading…
Add table
Reference in a new issue