From e3fdbd41ed77d327784775db5ba8f6577da45abe Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sat, 5 May 2007 21:57:47 +0000 Subject: [PATCH] used entities are now marked removed deleted header [r13658] --- ir/be/arm/arm_emitter.c | 1 + ir/be/arm/arm_transform.c | 5 ++++- ir/be/arm/bearch_arm.c | 9 +++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ir/be/arm/arm_emitter.c b/ir/be/arm/arm_emitter.c index 44efb2ae3..7c83cb787 100644 --- a/ir/be/arm/arm_emitter.c +++ b/ir/be/arm/arm_emitter.c @@ -560,6 +560,7 @@ static void emit_be_Call(arm_emit_env_t *env, const ir_node *irn) { be_emit_cstring(env->emit, "\tbl "); if (ent) { + mark_entity_visited(ent); be_emit_ident(env->emit, get_entity_ld_ident(ent)); } else { arm_emit_source_register(env, irn, be_pos_Call_ptr); diff --git a/ir/be/arm/arm_transform.c b/ir/be/arm/arm_transform.c index 2ecc23513..b189b960c 100644 --- a/ir/be/arm/arm_transform.c +++ b/ir/be/arm/arm_transform.c @@ -895,6 +895,7 @@ static ir_node *gen_Cond(ir_node *irn, arm_code_gen_t *cg) { * @return name of the SymConst */ const char *get_sc_name(ir_node *symc) { + ir_entity *ent; if (get_irn_opcode(symc) != iro_SymConst) return "NONE"; @@ -903,7 +904,9 @@ const char *get_sc_name(ir_node *symc) { return get_id_str(get_SymConst_name(symc)); case symconst_addr_ent: - return get_entity_ld_name(get_SymConst_entity(symc)); + ent = get_SymConst_entity(symc); + mark_entity_visited(ent); + return get_entity_ld_name(ent); default: assert(0 && "Unsupported SymConst"); diff --git a/ir/be/arm/bearch_arm.c b/ir/be/arm/bearch_arm.c index 7af7c14db..db6c9c406 100644 --- a/ir/be/arm/bearch_arm.c +++ b/ir/be/arm/bearch_arm.c @@ -57,7 +57,6 @@ #include "arm_new_nodes.h" /* arm nodes interface */ #include "gen_arm_regalloc_if.h" /* the generated interface (register type and class defenitions) */ -#include "arm_gen_decls.h" /* interface declaration emitter */ #include "arm_transform.h" #include "arm_emitter.h" #include "arm_map_regs.h" @@ -375,7 +374,7 @@ static ir_node *convert_dbl_to_int(ir_node *bl, ir_node *arg, ir_node *mem, * * Handle some special cases here: * 1.) A constant: simply move - * 2.) A load: siply load + * 2.) A load: simply load */ static ir_node *convert_sng_to_int(ir_node *bl, ir_node *arg) { if (is_Const(arg)) { @@ -726,6 +725,12 @@ static void *arm_init(FILE *file_handle) { arm_create_opcodes(); arm_handle_intrinsics(); + /* we mark referenced global entities, so we can only emit those which + * are actually referenced. (Note: you mustn't use the type visited flag + * elsewhere in the backend) + */ + inc_master_type_visited(); + inited = 1; return isa; } -- 2.20.1