* gcse.c (try_replace_reg): Use num_changes_pending.
* recog.c (num_changes_pending): New function.
(validate_replace_src): Use validate_repalce_src_group.
(validate_replace_src_group): New.
* recog.h (validate_repalce_src_group): New.
(num_changes_pending): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55677
138bc75d-0d04-0410-961f-
82ee72b054a4
+2002-07-23 Jan Hubicka <jh@suse.cz>
+
+ * gcse.c (try_replace_reg): Use num_changes_pending.
+ * recog.c (num_changes_pending): New function.
+ (validate_replace_src): Use validate_repalce_src_group.
+ (validate_replace_src_group): New.
+ * recog.h (validate_repalce_src_group): New.
+ (num_changes_pending): Likewise.
+
Tue Jul 23 12:16:58 2002 J"orn Rennecke <joern.rennecke@superh.com>
* calls.c (emit_library_call_value_1): If
int success = 0;
rtx set = single_set (insn);
- if (reg_mentioned_p (from, PATTERN (insn)))
- {
- success = validate_replace_src (from, to, insn);
- }
+ validate_replace_src_group (from, to, insn);
+ if (num_changes_pending () && apply_change_group ())
+ success = 1;
if (!success && set && reg_mentioned_p (from, SET_SRC (set)))
{
return 0;
}
+/* Return number of changes made and not validated yet. */
+int
+num_changes_pending ()
+{
+ return num_changes;
+}
+
/* Apply a group of changes previously issued with `validate_change'.
Return 1 if all changes are valid, zero otherwise. */
}
/* Try replacing every occurrence of FROM in INSN with TO, avoiding
- SET_DESTs. After all changes have been made, validate by seeing if
- INSN is still valid. */
+ SET_DESTs. */
-int
-validate_replace_src (from, to, insn)
+void
+validate_replace_src_group (from, to, insn)
rtx from, to, insn;
{
struct validate_replace_src_data d;
d.to = to;
d.insn = insn;
note_uses (&PATTERN (insn), validate_replace_src_1, &d);
+}
+
+/* Same as validate_repalace_src_group, but validate by seeing if
+ INSN is still valid. */
+int
+validate_replace_src (from, to, insn)
+ rtx from, to, insn;
+{
+ validate_replace_src_group (from, to, insn);
return apply_change_group ();
}
\f
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));
+extern void validate_replace_src_group PARAMS ((rtx, rtx, rtx));
+extern int num_changes_pending PARAMS ((void));
#ifdef HAVE_cc0
extern int next_insn_tests_no_inequality PARAMS ((rtx));
#endif