X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbearch.h;h=578be58b822ee98fb0cb90c7ad824d205acb3783;hb=e6ad8ee4680a88db8652483c2c6f3124f3d9a888;hp=0128d1d2a4cb93be23b826126cf4277a2f43bc47;hpb=0ede039789208c6193a14b4505417a4995369516;p=libfirm diff --git a/ir/be/bearch.h b/ir/be/bearch.h index 0128d1d2a..578be58b8 100644 --- a/ir/be/bearch.h +++ b/ir/be/bearch.h @@ -278,14 +278,12 @@ struct _arch_irn_ops_if_t { entity *(*get_frame_entity)(const void *self, const ir_node *irn); /** - * Set a bias for the stack pointer. - * If the node in question uses the stack pointer for indexing, it must - * consider the value of bias additionally. + * Set the offset of a node carrying an entity on the stack frame. * @param self The this pointer. - * @param irn The node in question. - * @param bias The bias. + * @param irn The node. + * @param offset The offset of the node's stack frame entity. */ - void (*set_stack_bias)(const void *self, ir_node *irn, int bias); + void (*set_frame_offset)(const void *self, ir_node *irn, int offset); }; /** @@ -295,8 +293,9 @@ struct _arch_irn_ops_t { const arch_irn_ops_if_t *impl; }; -extern void -arch_set_stack_bias(const arch_env_t *env, ir_node *irn, int bias); +extern void arch_set_frame_offset(const arch_env_t *env, ir_node *irn, int bias); + +extern entity *arch_get_frame_entity(const arch_env_t *env, ir_node *irn); /** * Get the register requirements for a node. @@ -458,20 +457,9 @@ struct _arch_code_generator_if_t { void (*before_ra)(void *self); /** - * Called after register allocation to lower Spills to Stores - * @param self The code generator - * @param spill The spill node to lower - * @return The new backend node which substitutes the spill - */ - ir_node *(*lower_spill)(void *self, ir_node *spill); - - /** - * Called after register allocation to lower Reloads to Loads - * @param self The code generator - * @param reload The reload node to lower - * @return The new backend node which substitutes the reload + * Called after register allocation. */ - ir_node *(*lower_reload)(void *self, ir_node *reload); + void (*after_ra)(void *self); /** * Called after everything happened. @@ -490,6 +478,7 @@ do { \ #define arch_code_generator_prepare_graph(cg) _arch_cg_call(cg, prepare_graph) #define arch_code_generator_before_sched(cg) _arch_cg_call(cg, before_sched) #define arch_code_generator_before_ra(cg) _arch_cg_call(cg, before_ra) +#define arch_code_generator_after_ra(cg) _arch_cg_call(cg, after_ra) #define arch_code_generator_done(cg) _arch_cg_call(cg, done) /** @@ -583,14 +572,6 @@ struct _arch_isa_if_t { */ const list_sched_selector_t *(*get_list_sched_selector)(const void *self); - /** - * Take a proj from a call, set the correct register and projnum for this proj - * @param self The isa object. - * @param proj The proj - * @param is_keep Non-zero if proj is a Keep argument - * @return The backend proj number assigned to this proj - */ - long (*handle_call_proj)(const void *self, ir_node *proj, int is_keep); }; #define arch_isa_get_n_reg_class(isa) ((isa)->impl->get_n_reg_class(isa)) @@ -637,6 +618,13 @@ extern arch_env_t *arch_env_init(arch_env_t *env, const arch_isa_if_t *isa); * @param handler A node handler. * @return The environment itself. */ -extern arch_env_t *arch_env_add_irn_handler(arch_env_t *env, const arch_irn_handler_t *handler); +extern arch_env_t *arch_env_push_irn_handler(arch_env_t *env, const arch_irn_handler_t *handler); + +/** + * Remove a node handler from the handler stack. + * @param env The architecture environment. + * @return The popped handler. + */ +extern const arch_irn_handler_t *arch_env_pop_irn_handler(arch_env_t *env); #endif /* _FIRM_BEARCH_H */