projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Initial commit of morgans spilling algorithm (spill unused values that live through
[libfirm]
/
ir
/
be
/
benode.c
diff --git
a/ir/be/benode.c
b/ir/be/benode.c
index
957c1a8
..
98d97b8
100644
(file)
--- a/
ir/be/benode.c
+++ b/
ir/be/benode.c
@@
-232,7
+232,7
@@
static void *init_node_attr(ir_node* irn, int max_reg_data)
return a;
}
return a;
}
-
static INLINE
int is_be_node(const ir_node *irn)
+int is_be_node(const ir_node *irn)
{
return get_op_tag(get_irn_op(irn)) == &be_node_tag;
}
{
return get_op_tag(get_irn_op(irn)) == &be_node_tag;
}
@@
-309,12
+309,18
@@
ir_node *be_new_Reload(const arch_register_class_t *cls, const arch_register_cla
return res;
}
return res;
}
-ir_node *
(be_get_Reload_mem)
(const ir_node *irn)
+ir_node *
be_get_Reload_mem
(const ir_node *irn)
{
assert(be_is_Reload(irn));
return get_irn_n(irn, be_pos_Reload_mem);
}
{
assert(be_is_Reload(irn));
return get_irn_n(irn, be_pos_Reload_mem);
}
+ir_node *be_get_Reload_frame(const ir_node *irn)
+{
+ assert(be_is_Reload(irn));
+ return get_irn_n(irn, be_pos_Reload_frame);
+}
+
ir_node *be_new_Perm(const arch_register_class_t *cls, ir_graph *irg, ir_node *bl, int n, ir_node *in[])
{
int i;
ir_node *be_new_Perm(const arch_register_class_t *cls, ir_graph *irg, ir_node *bl, int n, ir_node *in[])
{
int i;
@@
-345,6
+351,10
@@
ir_node *be_get_Copy_op(const ir_node *cpy) {
return get_irn_n(cpy, be_pos_Copy_op);
}
return get_irn_n(cpy, be_pos_Copy_op);
}
+void be_set_Copy_op(ir_node *cpy, ir_node *op) {
+ set_irn_n(cpy, be_pos_Copy_op, op);
+}
+
ir_node *be_new_Keep(const arch_register_class_t *cls, ir_graph *irg, ir_node *bl, int n, ir_node *in[])
{
int i;
ir_node *be_new_Keep(const arch_register_class_t *cls, ir_graph *irg, ir_node *bl, int n, ir_node *in[])
{
int i;
@@
-431,7
+441,7
@@
ir_node *be_new_IncSP(const arch_register_t *sp, ir_graph *irg, ir_node *bl, ir_
{
be_stack_attr_t *a;
ir_node *irn;
{
be_stack_attr_t *a;
ir_node *irn;
- ir_node *in[
1
];
+ ir_node *in[
2
];
in[0] = old_sp;
in[1] = mem;
in[0] = old_sp;
in[1] = mem;
@@
-1016,6
+1026,7
@@
static arch_irn_class_t be_node_classify(const void *_self, const ir_node *irn)
XXX(Perm, perm);
XXX(Copy, copy);
XXX(Return, branch);
XXX(Perm, perm);
XXX(Copy, copy);
XXX(Return, branch);
+ XXX(StackParam, stackparam);
#undef XXX
default:
return 0;
#undef XXX
default:
return 0;