aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/resource.c21
-rw-r--r--gcc/resource.h3
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 *);