re PR rtl-optimization/33669 (Revision 128957 miscompiles 481.wrf)
2007-10-07 Kenneth Zadeck <zadeck@naturalbridge.com> PR middle-end/33669 * ra-conflict.c (record_one_conflict_between_regnos, set_conflicts_for_earlyclobber, global_conflicts): Improved logging. (global_conflicts): Enhanced incorrect check. From-SVN: r129193
This commit is contained in:
parent
69ccae8140
commit
341f08a376
@ -1,3 +1,10 @@
|
||||
2007-10-07 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||
|
||||
PR middle-end/33669
|
||||
* ra-conflict.c (record_one_conflict_between_regnos,
|
||||
set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
|
||||
(global_conflicts): Enhanced incorrect check.
|
||||
|
||||
2007-10-09 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* dwarf2out.c (output_call_frame_info): FDEs are always emitted
|
||||
|
@ -196,7 +196,7 @@ record_one_conflict_between_regnos (enum machine_mode mode1, int r1,
|
||||
int allocno2 = reg_allocno[r2];
|
||||
|
||||
if (dump_file)
|
||||
fprintf (dump_file, " rocbr adding %d<=>%d\n", r1, r2);
|
||||
fprintf (dump_file, " rocbr adding %d<=>%d\n", r1, r2);
|
||||
|
||||
if (allocno1 >= 0 && allocno2 >= 0)
|
||||
set_conflict (allocno1, allocno2);
|
||||
@ -401,9 +401,6 @@ set_conflicts_for_earlyclobber (rtx insn)
|
||||
recog_data.operand[use + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
if (dump_file)
|
||||
fprintf (dump_file, " finished early clobber conflicts.\n");
|
||||
}
|
||||
|
||||
|
||||
@ -983,12 +980,12 @@ global_conflicts (void)
|
||||
set_renumbers_live (&renumbers_live, live_subregs, live_subregs_used,
|
||||
allocnum, renumber);
|
||||
}
|
||||
|
||||
else if (!sparseset_bit_p (allocnos_live, allocnum))
|
||||
else if (live_subregs_used[allocnum] > 0
|
||||
|| !sparseset_bit_p (allocnos_live, allocnum))
|
||||
{
|
||||
if (dump_file)
|
||||
fprintf (dump_file, " dying pseudo\n");
|
||||
|
||||
fprintf (dump_file, " %sdying pseudo\n",
|
||||
(live_subregs_used[allocnum] > 0) ? "partially ": "");
|
||||
/* Resetting the live_subregs_used is
|
||||
effectively saying do not use the subregs
|
||||
because we are reading the whole pseudo. */
|
||||
@ -1071,6 +1068,8 @@ global_conflicts (void)
|
||||
FIXME: We should consider either adding a new kind of
|
||||
clobber, or adding a flag to the clobber distinguish
|
||||
these two cases. */
|
||||
if (dump_file && VEC_length (df_ref_t, clobbers))
|
||||
fprintf (dump_file, " clobber conflicts\n");
|
||||
for (k = VEC_length (df_ref_t, clobbers) - 1; k >= 0; k--)
|
||||
{
|
||||
struct df_ref *def = VEC_index (df_ref_t, clobbers, k);
|
||||
@ -1132,6 +1131,8 @@ global_conflicts (void)
|
||||
if (GET_CODE (PATTERN (insn)) == PARALLEL && multiple_sets (insn))
|
||||
{
|
||||
int j;
|
||||
if (dump_file)
|
||||
fprintf (dump_file, " multiple sets\n");
|
||||
for (j = VEC_length (df_ref_t, dying_regs) - 1; j >= 0; j--)
|
||||
{
|
||||
int used_in_output = 0;
|
||||
@ -1166,7 +1167,7 @@ global_conflicts (void)
|
||||
}
|
||||
}
|
||||
|
||||
/* Add the renumbers live to the hard_regs_live for the next few
|
||||
/* Add the renumbers live to the hard_regs_live for the next few
|
||||
calls. All of this gets recomputed at the top of the loop so
|
||||
there is no harm. */
|
||||
IOR_HARD_REG_SET (hard_regs_live, renumbers_live);
|
||||
|
Loading…
Reference in New Issue
Block a user