diff options
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/resource.c | 21 | ||||
-rw-r--r-- | gcc/resource.h | 3 |
3 files changed, 17 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1105644..4f79d5e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +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> * stmt.c (expand_nl_goto_receiver): Copy hard register clobbers diff --git a/gcc/resource.c b/gcc/resource.c index 2aab94c..8e3bf8d 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 b738a0c..96eff6e 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 *); |