aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/gcse.c4
-rw-r--r--gcc/recog.c12
-rw-r--r--gcc/recog.h1
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 87c9b6b..b3f0620 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Sun Jul 30 20:42:21 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * gcse.c (try_replace_reg): Use validate_replace_rtx_subexp
+ instead of replace_rtx.
+ * recog.c (validate_replace_rtx_subexp): New function.
+ * recog.h (validate_replace_rtx_subexp): Declare.
+
Sun Jul 30 20:38:26 MET DST 2000 Jan Hubicka <jh@suse.cz>
* combine.c (simplify_set, make_extraction, make_compound_operation
diff --git a/gcc/gcse.c b/gcc/gcse.c
index cec2c88..9825794 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -3578,8 +3578,10 @@ try_replace_reg (from, to, insn)
{
rtx simplified;
+ if (!validate_replace_rtx_subexp (from, to, insn, &XEXP (note, 0)))
+ abort();
+
src = XEXP (note, 0);
- replace_rtx (src, from, to);
/* Try to simplify resulting note. */
simplified = simplify_rtx (src);
diff --git a/gcc/recog.c b/gcc/recog.c
index db1c913..18875de 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -603,6 +603,18 @@ validate_replace_rtx_1 (loc, from, to, object)
}
}
+/* Try replacing every occurrence of FROM in subexpression LOC of INSN
+ with TO. After all changes have been made, validate by seeing
+ if INSN is still valid. */
+
+int
+validate_replace_rtx_subexp (from, to, insn, loc)
+ rtx from, to, insn, *loc;
+{
+ validate_replace_rtx_1 (loc, from, to, insn);
+ return apply_change_group ();
+}
+
/* Try replacing every occurrence of FROM in INSN with TO. After all
changes have been made, validate by seeing if INSN is still valid. */
diff --git a/gcc/recog.h b/gcc/recog.h
index 465013a..d4fd4fd 100644
--- a/gcc/recog.h
+++ b/gcc/recog.h
@@ -79,6 +79,7 @@ extern void cancel_changes PARAMS ((int));
extern int constrain_operands PARAMS ((int));
extern int memory_address_p PARAMS ((enum machine_mode, rtx));
extern int strict_memory_address_p PARAMS ((enum machine_mode, rtx));
+extern int validate_replace_rtx_subexp PARAMS ((rtx, rtx, rtx, rtx *));
extern int validate_replace_rtx PARAMS ((rtx, rtx, rtx));
extern void validate_replace_rtx_group PARAMS ((rtx, rtx, rtx));
extern int validate_replace_src PARAMS ((rtx, rtx, rtx));