Commit 73fb6466 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

re PR target/13256 (strict_low_part mistreated in delay slots)

	PR target/13256
	* resource.h (enum mark_resource_type): Remove member MARK_DEST.
	The only user changed as follows:
	* resource.c (mark_set_resources) <case SET>: Always recurse for
	SET_SRC (x).
	<case SIGN_EXTRACT, case ZERO_EXTRACT>: Always recurse on
	operands.
	<case STRICT_LOW_PART>: Delete, deferring to default code.

From-SVN: r74328
parent b64de1fe
2003-12-05 Hans-Peter Nilsson <hp@axis.com>
PR target/13256
* resource.h (enum mark_resource_type): Remove member MARK_DEST.
The only user changed as follows:
* resource.c (mark_set_resources) <case SET>: Always recurse for
SET_SRC (x).
<case SIGN_EXTRACT, case ZERO_EXTRACT>: Always recurse on
operands.
<case STRICT_LOW_PART>: Delete, deferring to default code.
2003-12-05 Waldek Hebisch <hebisch@math.uni.wroc.pl> 2003-12-05 Waldek Hebisch <hebisch@math.uni.wroc.pl>
* stmt.c (expand_nl_goto_receiver): Copy hard register clobbers * stmt.c (expand_nl_goto_receiver): Copy hard register clobbers
......
...@@ -616,7 +616,7 @@ find_dead_or_set_registers (rtx target, struct resources *res, ...@@ -616,7 +616,7 @@ find_dead_or_set_registers (rtx target, struct resources *res,
/* Given X, a part of an insn, and a pointer to a `struct resource', /* Given X, a part of an insn, and a pointer to a `struct resource',
RES, indicate which resources are modified by the insn. If RES, indicate which resources are modified by the insn. If
MARK_TYPE is MARK_SRC_DEST_CALL, also mark resources potentially MARK_TYPE is MARK_SRC_DEST_CALL, also mark resources potentially
set by the called routine. If MARK_TYPE is MARK_DEST, only mark SET_DESTs set by the called routine.
If IN_DEST is nonzero, it means we are inside a SET. Otherwise, If IN_DEST is nonzero, it means we are inside a SET. Otherwise,
objects are being referenced instead of set. objects are being referenced instead of set.
...@@ -716,7 +716,6 @@ mark_set_resources (rtx x, struct resources *res, int in_dest, ...@@ -716,7 +716,6 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
|| GET_CODE (SET_SRC (x)) != CALL), || GET_CODE (SET_SRC (x)) != CALL),
mark_type); mark_type);
if (mark_type != MARK_DEST)
mark_set_resources (SET_SRC (x), res, 0, MARK_SRC_DEST); mark_set_resources (SET_SRC (x), res, 0, MARK_SRC_DEST);
return; return;
...@@ -747,12 +746,9 @@ mark_set_resources (rtx x, struct resources *res, int in_dest, ...@@ -747,12 +746,9 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
case SIGN_EXTRACT: case SIGN_EXTRACT:
case ZERO_EXTRACT: case ZERO_EXTRACT:
if (! (mark_type == MARK_DEST && in_dest))
{
mark_set_resources (XEXP (x, 0), res, in_dest, MARK_SRC_DEST); mark_set_resources (XEXP (x, 0), res, in_dest, MARK_SRC_DEST);
mark_set_resources (XEXP (x, 1), res, 0, MARK_SRC_DEST); mark_set_resources (XEXP (x, 1), res, 0, MARK_SRC_DEST);
mark_set_resources (XEXP (x, 2), res, 0, MARK_SRC_DEST); mark_set_resources (XEXP (x, 2), res, 0, MARK_SRC_DEST);
}
return; return;
case MEM: case MEM:
...@@ -799,13 +795,6 @@ mark_set_resources (rtx x, struct resources *res, int in_dest, ...@@ -799,13 +795,6 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
} }
return; return;
case STRICT_LOW_PART:
if (! (mark_type == MARK_DEST && in_dest))
{
mark_set_resources (XEXP (x, 0), res, 0, MARK_SRC_DEST);
return;
}
case UNSPEC_VOLATILE: case UNSPEC_VOLATILE:
case ASM_INPUT: case ASM_INPUT:
/* Traditional asm's are always volatile. */ /* Traditional asm's are always volatile. */
......
...@@ -37,8 +37,7 @@ struct resources ...@@ -37,8 +37,7 @@ struct resources
enum mark_resource_type enum mark_resource_type
{ {
MARK_SRC_DEST = 0, MARK_SRC_DEST = 0,
MARK_SRC_DEST_CALL = 1, MARK_SRC_DEST_CALL = 1
MARK_DEST = 2
}; };
extern void mark_target_live_regs (rtx, rtx, struct resources *); extern void mark_target_live_regs (rtx, rtx, struct resources *);
......
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