summaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1999-02-25 23:45:42 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1999-02-25 23:45:42 +0000
commit71caadc045ef9387efaa189404bba29d083a1771 (patch)
tree5f11cf1c6b61122849435f2ab564e45e67595e64 /gcc/reg-stack.c
parente3e7d1c2029a646e0edad36cc7d3ad64dcab82bd (diff)
downloadgcc-71caadc045ef9387efaa189404bba29d083a1771.tar.gz
Flow rewrite to use basic block structures and edge lists.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25450 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r--gcc/reg-stack.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index a0f48fa1e56..203e1af6007 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -229,9 +229,23 @@ static rtx
/* Get the basic block number of an insn. See note at block_number
definition are validity of this information. */
-#define BLOCK_NUM(INSN) \
- ((INSN_UID (INSN) > max_uid) \
- ? (abort() , -1) : block_number[INSN_UID (INSN)])
+static int BLOCK_NUM PROTO((rtx));
+
+#ifdef __GNUC__
+__inline__
+#endif
+static int
+BLOCK_NUM(insn)
+ rtx insn;
+{
+ int tmp = INSN_UID (insn);
+ if (tmp > max_uid)
+ abort ();
+ tmp = block_number[tmp];
+ if (tmp < 0)
+ abort ();
+ return tmp;
+}
extern rtx forced_labels;
@@ -502,6 +516,7 @@ reg_to_stack (first, file)
bzero ((char *) block_out_reg_set, blocks * sizeof (HARD_REG_SET));
block_number = (int *) alloca ((max_uid + 1) * sizeof (int));
+ memset (block_number, -1, (max_uid + 1) * sizeof (int));
find_blocks (first);
stack_reg_life_analysis (first, &stackentry);