From 73fb6466a4017f596d131bc2472a265766f761cc Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Fri, 5 Dec 2003 11:53:56 +0000 Subject: [PATCH] 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) : Always recurse for SET_SRC (x). : Always recurse on operands. : Delete, deferring to default code. From-SVN: r74328 --- gcc/ChangeLog | 11 +++++++++++ gcc/resource.c | 21 +++++---------------- gcc/resource.h | 3 +-- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1105644a9b7..4f79d5e521e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2003-12-05 Hans-Peter Nilsson + + PR target/13256 + * resource.h (enum mark_resource_type): Remove member MARK_DEST. + The only user changed as follows: + * resource.c (mark_set_resources) : Always recurse for + SET_SRC (x). + : Always recurse on + operands. + : Delete, deferring to default code. + 2003-12-05 Waldek Hebisch * stmt.c (expand_nl_goto_receiver): Copy hard register clobbers diff --git a/gcc/resource.c b/gcc/resource.c index 2aab94c525d..8e3bf8df37e 100644 --- a/gcc/resource.c +++ b/gcc/resource.c @@ -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', RES, indicate which resources are modified by the insn. If 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, objects are being referenced instead of set. @@ -716,8 +716,7 @@ mark_set_resources (rtx x, struct resources *res, int in_dest, || GET_CODE (SET_SRC (x)) != CALL), 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; case CLOBBER: @@ -747,12 +746,9 @@ mark_set_resources (rtx x, struct resources *res, int in_dest, case SIGN_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, 1), res, 0, MARK_SRC_DEST); - mark_set_resources (XEXP (x, 2), res, 0, 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, 2), res, 0, MARK_SRC_DEST); return; case MEM: @@ -799,13 +795,6 @@ mark_set_resources (rtx x, struct resources *res, int in_dest, } 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 ASM_INPUT: /* Traditional asm's are always volatile. */ diff --git a/gcc/resource.h b/gcc/resource.h index b738a0c504f..96eff6ed1ff 100644 --- a/gcc/resource.h +++ b/gcc/resource.h @@ -37,8 +37,7 @@ struct resources enum mark_resource_type { MARK_SRC_DEST = 0, - MARK_SRC_DEST_CALL = 1, - MARK_DEST = 2 + MARK_SRC_DEST_CALL = 1 }; extern void mark_target_live_regs (rtx, rtx, struct resources *); -- 2.30.2