mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-17 14:39:42 +08:00
sparc.c (output_cbranch): Add default case in enumeration switch.
* config/sparc/sparc.c (output_cbranch): Add default case in enumeration switch. * reorg.c (insn_sets_resource_p): Correct typo in prototype. (emit_delay_sequence): Eliminate unused parameter, all callers changed. (fill_simple_delay_slots): Likewise. (fill_slots_from_thread): Likewise. (fill_eager_delay_slots): Likewise. (mark_referenced_resources): Add default case in enumeration switch. (mark_set_resources): Likewise. (rare_destination): Likewise. (mostly_true_jump): Likewise. (find_dead_or_set_registers): Likewise. (redirect_with_delay_slots_safe_p): Remove unused variable `slots'. (update_reg_unused_notes): Remove unused variable `p'. (mark_target_live_regs): Remove unused variables `next' and `jump_count'. (fill_simple_delay_slots): Remove unused variable `j'. (fill_slots_from_thread): Add parentheses around assignment used as truth value. (dbr_schedule): Likewise. From-SVN: r17475
This commit is contained in:
parent
eb1d4d913f
commit
91a5195111
@ -1,5 +1,28 @@
|
||||
Sun Jan 25 12:30:18 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* sparc.c (output_cbranch): Add default case in
|
||||
enumeration switch.
|
||||
|
||||
* reorg.c (insn_sets_resource_p): Correct typo in prototype.
|
||||
(emit_delay_sequence): Eliminate unused parameter, all callers
|
||||
changed.
|
||||
(fill_simple_delay_slots): Likewise.
|
||||
(fill_slots_from_thread): Likewise.
|
||||
(fill_eager_delay_slots): Likewise.
|
||||
(mark_referenced_resources): Add default case in enumeration switch.
|
||||
(mark_set_resources): Likewise.
|
||||
(rare_destination): Likewise.
|
||||
(mostly_true_jump): Likewise.
|
||||
(find_dead_or_set_registers): Likewise.
|
||||
(redirect_with_delay_slots_safe_p): Remove unused variable `slots'.
|
||||
(update_reg_unused_notes): Remove unused variable `p'.
|
||||
(mark_target_live_regs): Remove unused variables `next' and
|
||||
`jump_count'.
|
||||
(fill_simple_delay_slots): Remove unused variable `j'.
|
||||
(fill_slots_from_thread): Add parentheses around assignment used
|
||||
as truth value.
|
||||
(dbr_schedule): Likewise.
|
||||
|
||||
* objc/Make-lang.in (objc.stage1): Depend on stage1-start.
|
||||
(objc.stage2, objc.stage3, objc.stage4): Likewise.
|
||||
|
||||
|
@ -4406,6 +4406,9 @@ output_cbranch (op, label, reversed, annul, noop)
|
||||
case LTU:
|
||||
strcpy (string, "blu");
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Now add the annulling, the label, and a possible noop. */
|
||||
|
79
gcc/reorg.c
79
gcc/reorg.c
@ -230,9 +230,9 @@ static int stop_search_p PROTO((rtx, int));
|
||||
static int resource_conflicts_p PROTO((struct resources *,
|
||||
struct resources *));
|
||||
static int insn_references_resource_p PROTO((rtx, struct resources *, int));
|
||||
static int insn_sets_resources_p PROTO((rtx, struct resources *, int));
|
||||
static int insn_sets_resource_p PROTO((rtx, struct resources *, int));
|
||||
static rtx find_end_label PROTO((void));
|
||||
static rtx emit_delay_sequence PROTO((rtx, rtx, int, int));
|
||||
static rtx emit_delay_sequence PROTO((rtx, rtx, int));
|
||||
static rtx add_to_delay_list PROTO((rtx, rtx));
|
||||
static void delete_from_delay_slot PROTO((rtx));
|
||||
static void delete_scheduled_jump PROTO((rtx));
|
||||
@ -265,10 +265,10 @@ static void update_reg_unused_notes PROTO((rtx, rtx));
|
||||
static void update_live_status PROTO((rtx, rtx));
|
||||
static rtx next_insn_no_annul PROTO((rtx));
|
||||
static void mark_target_live_regs PROTO((rtx, struct resources *));
|
||||
static void fill_simple_delay_slots PROTO((rtx, int));
|
||||
static void fill_simple_delay_slots PROTO((int));
|
||||
static rtx fill_slots_from_thread PROTO((rtx, rtx, rtx, rtx, int, int,
|
||||
int, int, int, int *));
|
||||
static void fill_eager_delay_slots PROTO((rtx));
|
||||
int, int, int *));
|
||||
static void fill_eager_delay_slots PROTO((void));
|
||||
static void relax_delay_slots PROTO((rtx));
|
||||
static void make_return_insns PROTO((rtx));
|
||||
static int redirect_with_delay_slots_safe_p PROTO ((rtx, rtx, rtx));
|
||||
@ -469,6 +469,9 @@ mark_referenced_resources (x, res, include_delayed_effects)
|
||||
/* No special processing, just speed up. */
|
||||
mark_referenced_resources (PATTERN (x), res, include_delayed_effects);
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Process each sub-expression and flag what it needs. */
|
||||
@ -658,6 +661,9 @@ mark_set_resources (x, res, in_dest, include_delayed_effects)
|
||||
for (i = 0; i < HARD_REGNO_NREGS (REGNO (x), GET_MODE (x)); i++)
|
||||
SET_HARD_REG_BIT (res->regs, REGNO (x) + i);
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Process each sub-expression and flag what it needs. */
|
||||
@ -861,11 +867,10 @@ find_end_label ()
|
||||
Returns the SEQUENCE that replaces INSN. */
|
||||
|
||||
static rtx
|
||||
emit_delay_sequence (insn, list, length, avail)
|
||||
emit_delay_sequence (insn, list, length)
|
||||
rtx insn;
|
||||
rtx list;
|
||||
int length;
|
||||
int avail;
|
||||
{
|
||||
register int i = 1;
|
||||
register rtx li;
|
||||
@ -1040,7 +1045,7 @@ delete_from_delay_slot (insn)
|
||||
/* If there are any delay insns, remit them. Otherwise clear the
|
||||
annul flag. */
|
||||
if (delay_list)
|
||||
trial = emit_delay_sequence (trial, delay_list, XVECLEN (seq, 0) - 2, 0);
|
||||
trial = emit_delay_sequence (trial, delay_list, XVECLEN (seq, 0) - 2);
|
||||
else
|
||||
INSN_ANNULLED_BRANCH_P (trial) = 0;
|
||||
|
||||
@ -1332,6 +1337,9 @@ rare_destination (insn)
|
||||
next = JUMP_LABEL (insn);
|
||||
else
|
||||
return 0;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1454,6 +1462,9 @@ mostly_true_jump (jump_insn, condition)
|
||||
if (XEXP (condition, 1) == const0_rtx)
|
||||
return 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Predict backward branches usually take, forward branches usually not. If
|
||||
@ -1545,7 +1556,7 @@ static int
|
||||
redirect_with_delay_slots_safe_p (jump, newlabel, seq)
|
||||
rtx jump, newlabel, seq;
|
||||
{
|
||||
int flags, slots, i;
|
||||
int flags, i;
|
||||
rtx pat = PATTERN (seq);
|
||||
|
||||
/* Make sure all the delay slots of this jump would still
|
||||
@ -2392,7 +2403,7 @@ static void
|
||||
update_reg_unused_notes (insn, redundant_insn)
|
||||
rtx insn, redundant_insn;
|
||||
{
|
||||
rtx p, link, next;
|
||||
rtx link, next;
|
||||
|
||||
for (link = REG_NOTES (insn); link; link = next)
|
||||
{
|
||||
@ -2547,6 +2558,9 @@ find_dead_or_set_registers (target, res, jump_target, jump_count, set, needed)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (GET_CODE (this_jump_insn) == JUMP_INSN)
|
||||
@ -2704,12 +2718,11 @@ mark_target_live_regs (target, res)
|
||||
int b = -1;
|
||||
int i;
|
||||
struct target_info *tinfo;
|
||||
rtx insn, next;
|
||||
rtx insn;
|
||||
rtx jump_insn = 0;
|
||||
rtx jump_target;
|
||||
HARD_REG_SET scratch;
|
||||
struct resources set, needed;
|
||||
int jump_count = 0;
|
||||
|
||||
/* Handle end of function. */
|
||||
if (target == 0)
|
||||
@ -2972,12 +2985,11 @@ mark_target_live_regs (target, res)
|
||||
through FINAL_SEQUENCE. */
|
||||
|
||||
static void
|
||||
fill_simple_delay_slots (first, non_jumps_p)
|
||||
rtx first;
|
||||
fill_simple_delay_slots (non_jumps_p)
|
||||
int non_jumps_p;
|
||||
{
|
||||
register rtx insn, pat, trial, next_trial;
|
||||
register int i, j;
|
||||
register int i;
|
||||
int num_unfilled_slots = unfilled_slots_next - unfilled_slots_base;
|
||||
struct resources needed, set;
|
||||
int slots_to_fill, slots_filled;
|
||||
@ -3323,12 +3335,11 @@ fill_simple_delay_slots (first, non_jumps_p)
|
||||
NULL, 1, 1,
|
||||
own_thread_p (JUMP_LABEL (insn),
|
||||
JUMP_LABEL (insn), 0),
|
||||
0, slots_to_fill, &slots_filled);
|
||||
slots_to_fill, &slots_filled);
|
||||
|
||||
if (delay_list)
|
||||
unfilled_slots_base[i]
|
||||
= emit_delay_sequence (insn, delay_list,
|
||||
slots_filled, slots_to_fill);
|
||||
= emit_delay_sequence (insn, delay_list, slots_filled);
|
||||
|
||||
if (slots_to_fill == slots_filled)
|
||||
unfilled_slots_base[i] = 0;
|
||||
@ -3452,14 +3463,14 @@ fill_simple_delay_slots (first, non_jumps_p)
|
||||
|
||||
static rtx
|
||||
fill_slots_from_thread (insn, condition, thread, opposite_thread, likely,
|
||||
thread_if_true, own_thread, own_opposite_thread,
|
||||
thread_if_true, own_thread,
|
||||
slots_to_fill, pslots_filled)
|
||||
rtx insn;
|
||||
rtx condition;
|
||||
rtx thread, opposite_thread;
|
||||
int likely;
|
||||
int thread_if_true;
|
||||
int own_thread, own_opposite_thread;
|
||||
int own_thread;
|
||||
int slots_to_fill, *pslots_filled;
|
||||
{
|
||||
rtx new_thread;
|
||||
@ -3542,7 +3553,7 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely,
|
||||
/* If TRIAL is redundant with some insn before INSN, we don't
|
||||
actually need to add it to the delay list; we can merely pretend
|
||||
we did. */
|
||||
if (prior_insn = redundant_insn (trial, insn, delay_list))
|
||||
if ((prior_insn = redundant_insn (trial, insn, delay_list)))
|
||||
{
|
||||
fix_reg_dead_note (prior_insn, insn);
|
||||
if (own_thread)
|
||||
@ -3842,8 +3853,7 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely,
|
||||
if safe. */
|
||||
|
||||
static void
|
||||
fill_eager_delay_slots (first)
|
||||
rtx first;
|
||||
fill_eager_delay_slots ()
|
||||
{
|
||||
register rtx insn;
|
||||
register int i;
|
||||
@ -3905,7 +3915,7 @@ fill_eager_delay_slots (first)
|
||||
delay_list
|
||||
= fill_slots_from_thread (insn, condition, insn_at_target,
|
||||
fallthrough_insn, prediction == 2, 1,
|
||||
own_target, own_fallthrough,
|
||||
own_target,
|
||||
slots_to_fill, &slots_filled);
|
||||
|
||||
if (delay_list == 0 && own_fallthrough)
|
||||
@ -3920,7 +3930,7 @@ fill_eager_delay_slots (first)
|
||||
delay_list
|
||||
= fill_slots_from_thread (insn, condition, fallthrough_insn,
|
||||
insn_at_target, 0, 0,
|
||||
own_fallthrough, own_target,
|
||||
own_fallthrough,
|
||||
slots_to_fill, &slots_filled);
|
||||
}
|
||||
}
|
||||
@ -3930,21 +3940,20 @@ fill_eager_delay_slots (first)
|
||||
delay_list
|
||||
= fill_slots_from_thread (insn, condition, fallthrough_insn,
|
||||
insn_at_target, 0, 0,
|
||||
own_fallthrough, own_target,
|
||||
own_fallthrough,
|
||||
slots_to_fill, &slots_filled);
|
||||
|
||||
if (delay_list == 0)
|
||||
delay_list
|
||||
= fill_slots_from_thread (insn, condition, insn_at_target,
|
||||
next_active_insn (insn), 0, 1,
|
||||
own_target, own_fallthrough,
|
||||
own_target,
|
||||
slots_to_fill, &slots_filled);
|
||||
}
|
||||
|
||||
if (delay_list)
|
||||
unfilled_slots_base[i]
|
||||
= emit_delay_sequence (insn, delay_list,
|
||||
slots_filled, slots_to_fill);
|
||||
= emit_delay_sequence (insn, delay_list, slots_filled);
|
||||
|
||||
if (slots_to_fill == slots_filled)
|
||||
unfilled_slots_base[i] = 0;
|
||||
@ -4389,8 +4398,8 @@ make_return_insns (first)
|
||||
if (--LABEL_NUSES (real_return_label) == 0)
|
||||
delete_insn (real_return_label);
|
||||
|
||||
fill_simple_delay_slots (first, 1);
|
||||
fill_simple_delay_slots (first, 0);
|
||||
fill_simple_delay_slots (1);
|
||||
fill_simple_delay_slots (0);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -4524,7 +4533,7 @@ dbr_schedule (first, file)
|
||||
|
||||
start_of_epilogue_needs = end_of_function_needs;
|
||||
|
||||
while (epilogue_insn = next_nonnote_insn (epilogue_insn))
|
||||
while ((epilogue_insn = next_nonnote_insn (epilogue_insn)))
|
||||
mark_set_resources (epilogue_insn, &end_of_function_needs, 0, 1);
|
||||
|
||||
/* Show we haven't computed an end-of-function label yet. */
|
||||
@ -4551,9 +4560,9 @@ dbr_schedule (first, file)
|
||||
reorg_pass_number < MAX_REORG_PASSES;
|
||||
reorg_pass_number++)
|
||||
{
|
||||
fill_simple_delay_slots (first, 1);
|
||||
fill_simple_delay_slots (first, 0);
|
||||
fill_eager_delay_slots (first);
|
||||
fill_simple_delay_slots (1);
|
||||
fill_simple_delay_slots (0);
|
||||
fill_eager_delay_slots ();
|
||||
relax_delay_slots (first);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user