From 50265ec8cba5da97a1ae57302de27a158f70ad70 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Mon, 19 Jan 2009 01:06:42 +0000 Subject: [PATCH] Get rid of pn_Start_value_param: Access to value_type entities is now given by the frame pointer. [r25250] --- ast2firm.c | 34 ++++++++-------------------------- driver/gen_firm_asm.c | 3 +-- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/ast2firm.c b/ast2firm.c index a402ec9..aeaa280 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -1402,24 +1402,6 @@ static ir_node *get_global_var_address(dbg_info *const dbgi, } } -/** - * Returns the correct base address depending on whether it is a parameter or a - * normal local variable. - * - * @param ent an entity representing a variable - */ -static ir_node *get_local_frame(ir_entity *const ent) -{ - ir_graph *const irg = current_ir_graph; - const ir_type *const owner = get_entity_owner(ent); - if (owner == get_irg_frame_type(irg)) { - return get_irg_frame(irg); - } else { - assert(owner == get_method_value_param_type(get_entity_type(get_irg_entity(irg)))); - return get_irg_value_param_base(irg); - } -} - /** * Keep all memory edges of the given block. */ @@ -1506,13 +1488,13 @@ static ir_node *reference_expression_to_firm(const reference_expression_t *ref) case DECLARATION_KIND_LOCAL_VARIABLE_ENTITY: { ir_entity *irentity = entity->variable.v.entity; - ir_node *frame = get_local_frame(irentity); + ir_node *frame = get_irg_frame(current_ir_graph); ir_node *sel = new_d_simpleSel(dbgi, new_NoMem(), frame, irentity); return deref_address(dbgi, entity->declaration.type, sel); } case DECLARATION_KIND_PARAMETER_ENTITY: { ir_entity *irentity = entity->parameter.v.entity; - ir_node *frame = get_local_frame(irentity); + ir_node *frame = get_irg_frame(current_ir_graph); ir_node *sel = new_d_simpleSel(dbgi, new_NoMem(), frame, irentity); return deref_address(dbgi, entity->declaration.type, sel); } @@ -1547,14 +1529,14 @@ static ir_node *reference_addr(const reference_expression_t *ref) } case DECLARATION_KIND_LOCAL_VARIABLE_ENTITY: { ir_entity *irentity = entity->variable.v.entity; - ir_node *frame = get_local_frame(irentity); + ir_node *frame = get_irg_frame(current_ir_graph); ir_node *sel = new_d_simpleSel(dbgi, new_NoMem(), frame, irentity); return sel; } case DECLARATION_KIND_PARAMETER_ENTITY: { ir_entity *irentity = entity->parameter.v.entity; - ir_node *frame = get_local_frame(irentity); + ir_node *frame = get_irg_frame(current_ir_graph); ir_node *sel = new_d_simpleSel(dbgi, new_NoMem(), frame, irentity); return sel; @@ -2895,7 +2877,7 @@ static ir_node *compound_literal_to_firm( create_local_initializer(initializer, dbgi, entity, type); /* create a sel for the compound literal address */ - ir_node *frame = get_local_frame(entity); + ir_node *frame = get_irg_frame(current_ir_graph); ir_node *sel = new_d_simpleSel(dbgi, new_NoMem(), frame, entity); return sel; } @@ -3270,11 +3252,11 @@ static ir_node *va_start_expression_to_firm( ir_type *const method_type = get_ir_type(type); int const n = get_method_n_params(method_type) - 1; ir_entity *const parm_ent = get_method_value_param_ent(method_type, n); - ir_node *const arg_base = get_irg_value_param_base(current_ir_graph); + ir_node *const frame = get_irg_frame(current_ir_graph); dbg_info *const dbgi = get_dbg_info(&expr->base.source_position); ir_node *const no_mem = new_NoMem(); ir_node *const arg_sel = - new_d_simpleSel(dbgi, no_mem, arg_base, parm_ent); + new_d_simpleSel(dbgi, no_mem, frame, parm_ent); ir_node *const cnst = get_type_size(expr->parameter->base.type); ir_mode *const mode = get_irn_mode(cnst); @@ -4225,7 +4207,7 @@ static void create_dynamic_initializer_sub(ir_initializer_t *initializer, static void create_dynamic_initializer(ir_initializer_t *initializer, dbg_info *dbgi, ir_entity *entity) { - ir_node *frame = get_local_frame(entity); + ir_node *frame = get_irg_frame(current_ir_graph); ir_node *base_addr = new_d_simpleSel(dbgi, new_NoMem(), frame, entity); ir_type *type = get_entity_type(entity); diff --git a/driver/gen_firm_asm.c b/driver/gen_firm_asm.c index 3a96eac..1657a63 100644 --- a/driver/gen_firm_asm.c +++ b/driver/gen_firm_asm.c @@ -241,7 +241,7 @@ static int generate_predef_node(FILE *f, ir_node *n) else if (n == code) \ name(f, " ", n, " = " #code ";\n"); - if (0) {} + if (0); X(get_irg_start(irg)) X(get_irg_start_block(irg)) X(get_irg_end(irg)) @@ -249,7 +249,6 @@ static int generate_predef_node(FILE *f, ir_node *n) X(get_irg_initial_exec(irg)) X(get_irg_frame(irg)) X(get_irg_tls(irg)) - X(get_irg_value_param_base(irg)) X(get_irg_initial_mem(irg)) X(get_irg_no_mem(irg)) else -- 2.20.1