diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-02-25 23:45:42 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-02-25 23:45:42 +0000 |
commit | 71caadc045ef9387efaa189404bba29d083a1771 (patch) | |
tree | 5f11cf1c6b61122849435f2ab564e45e67595e64 /gcc/reg-stack.c | |
parent | e3e7d1c2029a646e0edad36cc7d3ad64dcab82bd (diff) | |
download | gcc-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.c | 21 |
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); |