Commit 91700444 by Bernd Schmidt Committed by Bernd Schmidt

Make cselib_subst_to_values global.

From-SVN: r44717
parent 4b6c5340
...@@ -15,6 +15,11 @@ ...@@ -15,6 +15,11 @@
* sched-rgn.c (rgn_sched_info): Likewise. * sched-rgn.c (rgn_sched_info): Likewise.
* Makefile.in (sched-deps.o): Update dependencies. * Makefile.in (sched-deps.o): Update dependencies.
* cselib.h (cselib_subst_to_values): Declare.
* cselib.c (cselib_subst_to_values): No longer static. Allow MEMs
that have no value and autoincs to be handled by generating a new
dummy value.
2001-08-08 Graham Stott <grahams@redhat.com> 2001-08-08 Graham Stott <grahams@redhat.com>
* final.c (shorten_branches): Update the INSN_ADDRESSES of insns * final.c (shorten_branches): Update the INSN_ADDRESSES of insns
......
...@@ -60,7 +60,6 @@ static cselib_val *new_cselib_val PARAMS ((unsigned int, ...@@ -60,7 +60,6 @@ static cselib_val *new_cselib_val PARAMS ((unsigned int,
static void add_mem_for_addr PARAMS ((cselib_val *, cselib_val *, static void add_mem_for_addr PARAMS ((cselib_val *, cselib_val *,
rtx)); rtx));
static cselib_val *cselib_lookup_mem PARAMS ((rtx, int)); static cselib_val *cselib_lookup_mem PARAMS ((rtx, int));
static rtx cselib_subst_to_values PARAMS ((rtx));
static void cselib_invalidate_regno PARAMS ((unsigned int, static void cselib_invalidate_regno PARAMS ((unsigned int,
enum machine_mode)); enum machine_mode));
static int cselib_mem_conflict_p PARAMS ((rtx, rtx)); static int cselib_mem_conflict_p PARAMS ((rtx, rtx));
...@@ -765,7 +764,7 @@ cselib_lookup_mem (x, create) ...@@ -765,7 +764,7 @@ cselib_lookup_mem (x, create)
X isn't actually modified; if modifications are needed, new rtl is X isn't actually modified; if modifications are needed, new rtl is
allocated. However, the return value can share rtl with X. */ allocated. However, the return value can share rtl with X. */
static rtx rtx
cselib_subst_to_values (x) cselib_subst_to_values (x)
rtx x; rtx x;
{ {
...@@ -788,7 +787,11 @@ cselib_subst_to_values (x) ...@@ -788,7 +787,11 @@ cselib_subst_to_values (x)
case MEM: case MEM:
e = cselib_lookup_mem (x, 0); e = cselib_lookup_mem (x, 0);
if (! e) if (! e)
abort (); {
/* This happens for autoincrements. Assign a value that doesn't
match any other. */
e = new_cselib_val (++next_unknown_value, GET_MODE (x));
}
return e->u.val_rtx; return e->u.val_rtx;
/* CONST_DOUBLEs must be special-cased here so that we won't try to /* CONST_DOUBLEs must be special-cased here so that we won't try to
...@@ -797,6 +800,15 @@ cselib_subst_to_values (x) ...@@ -797,6 +800,15 @@ cselib_subst_to_values (x)
case CONST_INT: case CONST_INT:
return x; return x;
case POST_INC:
case PRE_INC:
case POST_DEC:
case PRE_DEC:
case POST_MODIFY:
case PRE_MODIFY:
e = new_cselib_val (++next_unknown_value, GET_MODE (x));
return e->u.val_rtx;
default: default:
break; break;
} }
......
...@@ -65,3 +65,4 @@ extern void cselib_finish PARAMS ((void)); ...@@ -65,3 +65,4 @@ extern void cselib_finish PARAMS ((void));
extern void cselib_process_insn PARAMS ((rtx)); extern void cselib_process_insn PARAMS ((rtx));
extern int rtx_equal_for_cselib_p PARAMS ((rtx, rtx)); extern int rtx_equal_for_cselib_p PARAMS ((rtx, rtx));
extern int references_value_p PARAMS ((rtx, int)); extern int references_value_p PARAMS ((rtx, int));
extern rtx cselib_subst_to_values PARAMS ((rtx));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment