aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2004-11-28 23:39:18 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:05:14 -0700
commit0c5a9f95b494cbd04786857927784c4fddf60365 (patch)
tree6736204b4513636f1a63c708262f63aba8c8167c /linearize.h
parentStart using instruction sizes properly. (diff)
downloadsparse-0c5a9f95b494cbd04786857927784c4fddf60365.tar.gz
sparse-0c5a9f95b494cbd04786857927784c4fddf60365.tar.bz2
sparse-0c5a9f95b494cbd04786857927784c4fddf60365.zip
Start tracking cross-basic-block pseudo usage.
This should basically allow us to do register allocation. Or maybe it's too broken. But the results look reasonable from a quick manual peek.
Diffstat (limited to 'linearize.h')
-rw-r--r--linearize.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/linearize.h b/linearize.h
index 06b145b..72cf4dd 100644
--- a/linearize.h
+++ b/linearize.h
@@ -22,7 +22,6 @@ struct pseudo {
int nr;
enum pseudo_type type;
struct pseudo_ptr_list *users;
- struct instruction_list *insns;
union {
struct symbol *sym;
struct instruction *def;
@@ -174,6 +173,7 @@ struct basic_block {
struct basic_block_list *parents; /* sources */
struct basic_block_list *children; /* destinations */
struct instruction_list *insns; /* Linear list of instructions */
+ struct pseudo_list *needs, *defines;
};
static inline int is_branch_goto(struct instruction *br)
@@ -251,7 +251,6 @@ struct entrypoint {
struct basic_block_list *bbs;
struct basic_block *active;
struct basic_block *entry;
- struct pseudo_list *pseudos;
};
extern void insert_select(struct basic_block *bb, struct instruction *br, struct instruction *phi, pseudo_t true, pseudo_t false);