X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbenode_t.h;h=3527fa428024d2a59436ec4ef8d30ac3166cb2de;hb=a41e7fa4e8451bba3ee4085c72a5db44b01f3ed4;hp=dd79fc6714ff4b5f021c5bfefb3bd4bc80eec8fd;hpb=03ffa62ef4f525aa0c45dbe766a17bc94b161695;p=libfirm diff --git a/ir/be/benode_t.h b/ir/be/benode_t.h index dd79fc671..3527fa428 100644 --- a/ir/be/benode_t.h +++ b/ir/be/benode_t.h @@ -12,24 +12,39 @@ #ifndef _BENODE_T_H #define _BENODE_T_H +#include "pmap.h" + #include "irmode.h" #include "irnode.h" +#include "be_t.h" #include "bearch.h" +struct _be_node_factory_t { + const arch_isa_if_t *isa; + + struct obstack obst; + set *ops; + pmap *irn_op_map; + pmap *reg_req_map; + + arch_irn_handler_t handler; + arch_irn_ops_t irn_ops; +}; + typedef struct _be_node_factory_t be_node_factory_t; -be_node_factory_t *be_new_node_factory(const arch_isa_if_t *isa); +be_node_factory_t *be_node_factory_init(be_node_factory_t *factory, const arch_isa_t *isa); const arch_irn_handler_t *be_node_get_irn_handler(const be_node_factory_t *f); ir_node *new_Spill(const be_node_factory_t *factory, const arch_register_class_t *cls, - ir_graph *irg, ir_node *bl, ir_node *node_to_spill); + ir_graph *irg, ir_node *bl, ir_node *node_to_spill, ir_node *ctx); ir_node *new_Reload(const be_node_factory_t *factory, - const arch_register_class_t *cls, - ir_graph *irg, ir_node *bl, ir_node *spill_node); + const arch_register_class_t *cls, ir_graph *irg, + ir_node *bl, ir_mode *mode, ir_node *spill_node); ir_node *new_Perm(const be_node_factory_t *factory, const arch_register_class_t *cls, @@ -39,15 +54,23 @@ ir_node *new_Copy(const be_node_factory_t *factory, const arch_register_class_t *cls, ir_graph *irg, ir_node *block, ir_node *in); -ir_node *be_spill(const be_node_factory_t *factory, const arch_env_t *env, ir_node *irn); -ir_node *be_reload(const be_node_factory_t *factory, const arch_env_t *env, ir_node *irn); +ir_node *be_spill( + const be_node_factory_t *factory, + const arch_env_t *arch_env, + ir_node *irn, + ir_node *spill_ctx); -int is_Spill(const be_node_factory_t *f, const ir_node *irn); +ir_node *be_reload( + const be_node_factory_t *factory, + const arch_env_t *arch_env, + const arch_register_class_t *cls, + ir_node *irn, int pos, ir_mode *mode, ir_node *spill); -ir_node *get_Reload_Spill(ir_node *reload); +int is_Spill(const be_node_factory_t *f, const ir_node *irn); -void insert_perm(const be_node_factory_t *factory, - const arch_register_class_t *reg_class, - ir_node *in_front_of); +ir_node *insert_Perm_after(const be_main_env_t *env, + const arch_register_class_t *cls, + dom_front_info_t *dom_front, + ir_node *pos); #endif /* _BENODE_T_H */