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:
Kenneth Zadeck 2007-10-10 03:32:43 +00:00 committed by Kenneth Zadeck
parent 69ccae8140
commit 341f08a376
2 changed files with 17 additions and 9 deletions

View File

@ -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

View File

@ -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;