From 433521231784c6ce26900f88c382bee63cdd169b Mon Sep 17 00:00:00 2001 From: Teddy Date: Sun, 4 May 2014 02:37:59 +0800 Subject: resolve interval building issues in loops --- ssa.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'ssa.h') diff --git a/ssa.h b/ssa.h index 722545d..3699b9d 100644 --- a/ssa.h +++ b/ssa.h @@ -34,20 +34,24 @@ struct COpr { int dep; int mod; int reg; /* -1 for spilled, -2 for discarded */ + int begin, end; /* for reg allocation */ CType_t type; CInst_t def; CRange_t range; COpr_t par; /* union-find */ COpr_t cval; + COpr_t spill; /* check this reference if spilled */ }; typedef struct COList COList; typedef COList *COList_t; struct COList { COpr_t opr; - COList_t next; + COList_t next, prev; }; +void colist_remove(COList_t node); + struct CInst { enum { BEQZ, /* conditional jump */ -- cgit v1.2.3