summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-30 18:44:13 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-30 18:44:13 +0000
commitf0c2dca09ad7c7c1aa0980bbe85659166059c2d7 (patch)
tree2c6fd84da6f0c23faff8a5ea847eb2f65a7c2b4c
parentaa57d9cd5e22b03e34ad2bc17b9700e3af2356fa (diff)
downloadppe42-gcc-f0c2dca09ad7c7c1aa0980bbe85659166059c2d7.tar.gz
ppe42-gcc-f0c2dca09ad7c7c1aa0980bbe85659166059c2d7.zip
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35349 138bc75d-0d04-0410-961f-82ee72b054a4
-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 87c9b6b81a0..b3f06208602 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 cec2c88ab82..9825794882a 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 db1c913dd04..18875de580b 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 465013a7307..d4fd4fd6934 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));
OpenPOWER on IntegriCloud