Commit c15c18c5 by Jim Wilson Committed by Jim Wilson

Fix x86 miscompilation of gdb mips simulator.

	* reload1.c (merge_assigned_reloads): After converting overlapping
	reloads to RELOAD_OTHER, abort if there are now conflicting reloads.
	* config/i386/i386.md (adddi3_1): Add call to ix86_binary_operator_ok.

From-SVN: r58184
parent 1a55127d
2002-10-15 Jim Wilson <wilson@redhat.com>
* reload1.c (merge_assigned_reloads): After converting overlapping
reloads to RELOAD_OTHER, abort if there are now conflicting reloads.
* config/i386/i386.md (adddi3_1): Add call to ix86_binary_operator_ok.
Tue Oct 15 22:08:35 CEST 2002 Jan Hubicka <jh@suse.cz>
* expr.c (do_tablejump): Fix typo in my previous commit.
......
......@@ -4705,7 +4705,7 @@
(plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
(match_operand:DI 2 "general_operand" "roiF,riF")))
(clobber (reg:CC 17))]
"!TARGET_64BIT"
"!TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)"
"#")
(define_split
......
......@@ -6119,10 +6119,24 @@ merge_assigned_reloads (insn)
|| rld[j].when_needed == RELOAD_FOR_INPADDR_ADDRESS)
&& reg_overlap_mentioned_for_reload_p (rld[j].in,
rld[i].in))
rld[j].when_needed
= ((rld[j].when_needed == RELOAD_FOR_INPUT_ADDRESS
|| rld[j].when_needed == RELOAD_FOR_INPADDR_ADDRESS)
? RELOAD_FOR_OTHER_ADDRESS : RELOAD_OTHER);
{
int k;
rld[j].when_needed
= ((rld[j].when_needed == RELOAD_FOR_INPUT_ADDRESS
|| rld[j].when_needed == RELOAD_FOR_INPADDR_ADDRESS)
? RELOAD_FOR_OTHER_ADDRESS : RELOAD_OTHER);
/* Check to see if we accidentally converted two reloads
that use the same reload register to the same type.
If so, the resulting code won't work, so abort. */
if (rld[j].reg_rtx)
for (k = 0; k < j; k++)
if (rld[k].in != 0 && rld[k].reg_rtx != 0
&& rld[k].when_needed == rld[j].when_needed
&& rtx_equal_p (rld[k].reg_rtx, rld[j].reg_rtx))
abort ();
}
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment