From: Sebastian Hack Date: Tue, 7 Mar 2006 14:48:07 +0000 (+0000) Subject: Added get_frame_entity/set_frame_offset functions X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=4e42a09bb2b4a6a2628243a38d2580973b608390;p=libfirm Added get_frame_entity/set_frame_offset functions Removed lower_spill/reload and other obsolete stuff --- diff --git a/ir/be/bearch.c b/ir/be/bearch.c index 53acd8091..63a8ed0b5 100644 --- a/ir/be/bearch.c +++ b/ir/be/bearch.c @@ -34,7 +34,7 @@ arch_env_t *arch_env_init(arch_env_t *env, const arch_isa_if_t *isa_if) return env; } -arch_env_t *arch_env_add_irn_handler(arch_env_t *env, +arch_env_t *arch_env_push_irn_handler(arch_env_t *env, const arch_irn_handler_t *handler) { assert(env->handlers_tos <= ARCH_MAX_HANDLERS); @@ -42,6 +42,12 @@ arch_env_t *arch_env_add_irn_handler(arch_env_t *env, return env; } +const arch_irn_handler_t *arch_env_pop_irn_handler(arch_env_t *env) +{ + assert(env->handlers_tos > 0 && env->handlers_tos <= ARCH_MAX_HANDLERS); + return env->handlers[--env->handlers_tos]; +} + static const arch_irn_ops_t *fallback_irn_ops = NULL; int arch_register_class_put(const arch_register_class_t *cls, bitset_t *bs) @@ -85,10 +91,10 @@ const arch_register_req_t *arch_get_register_req(const arch_env_t *env, return ops->impl->get_irn_reg_req(ops, req, irn, pos); } -void arch_set_stack_bias(const arch_env_t *env, ir_node *irn, int bias) +void arch_set_frame_offset(const arch_env_t *env, ir_node *irn, int offset) { const arch_irn_ops_t *ops = get_irn_ops(env, irn); - ops->impl->set_stack_bias(ops, irn, bias); + ops->impl->set_frame_offset(ops, irn, offset); } entity *arch_get_frame_entity(const arch_env_t *env, ir_node *irn) diff --git a/ir/be/bearch.h b/ir/be/bearch.h index 0128d1d2a..09c2783a6 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. @@ -457,22 +456,6 @@ 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 - */ - ir_node *(*lower_reload)(void *self, ir_node *reload); - /** * Called after everything happened. * The code generator must also be de-allocated here. @@ -583,14 +566,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 +612,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 */