From ebdaa596d904a0651c8d794481288d2d629bdb3a Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Wed, 3 Feb 2010 20:25:32 +0000 Subject: [PATCH] backend_marked was a buggy/wrong concept, removed it [r27032] --- include/libfirm/typerep.h | 6 ---- ir/be/TEMPLATE/bearch_TEMPLATE.c | 2 +- ir/be/arm/arm_emitter.c | 3 -- ir/be/arm/bearch_arm.c | 2 +- ir/be/begnuas.c | 61 +++++++------------------------- ir/be/begnuas.h | 5 +-- ir/be/ia32/bearch_ia32.c | 2 +- ir/be/ia32/ia32_emitter.c | 2 -- ir/be/mips/bearch_mips.c | 2 +- ir/be/ppc32/bearch_ppc32.c | 3 +- ir/be/ppc32/ppc32_emitter.c | 1 - ir/be/sparc/bearch_sparc.c | 2 +- ir/be/sparc/sparc_emitter.c | 1 - ir/tr/entity.c | 11 ------ ir/tr/entity_t.h | 16 --------- 15 files changed, 19 insertions(+), 100 deletions(-) diff --git a/include/libfirm/typerep.h b/include/libfirm/typerep.h index cfc500f60..82c7198a3 100644 --- a/include/libfirm/typerep.h +++ b/include/libfirm/typerep.h @@ -366,12 +366,6 @@ int is_entity_compiler_generated(const ir_entity *ent); /** Sets/resets the compiler generated flag. */ void set_entity_compiler_generated(ir_entity *ent, int flag); -/** Checks if an entity is marked by the backend. */ -int is_entity_backend_marked(const ir_entity *ent); - -/** Sets/resets the backend marker flag. */ -void set_entity_backend_marked(ir_entity *ent, int flag); - /** * Bitfield type indicating the way an entity is used. */ diff --git a/ir/be/TEMPLATE/bearch_TEMPLATE.c b/ir/be/TEMPLATE/bearch_TEMPLATE.c index e14f30a5e..b436c69da 100644 --- a/ir/be/TEMPLATE/bearch_TEMPLATE.c +++ b/ir/be/TEMPLATE/bearch_TEMPLATE.c @@ -242,7 +242,7 @@ static void TEMPLATE_done(void *self) TEMPLATE_isa_t *isa = self; /* emit now all global declarations */ - be_gas_emit_decls(isa->arch_env.main_env, 0); + be_gas_emit_decls(isa->arch_env.main_env); be_emit_exit(); free(self); diff --git a/ir/be/arm/arm_emitter.c b/ir/be/arm/arm_emitter.c index 0f22540c9..60e61d451 100644 --- a/ir/be/arm/arm_emitter.c +++ b/ir/be/arm/arm_emitter.c @@ -336,8 +336,6 @@ static void emit_arm_SymConst(const ir_node *irn) sym_or_tv_t key, *entry; unsigned label; - set_entity_backend_marked(attr->entity, 1); - key.u.id = get_entity_ld_ident(attr->entity); key.is_ident = 1; key.label = 0; @@ -746,7 +744,6 @@ static void emit_arm_SwitchJmp(const ir_node *irn) { static void arm_emit_entity(ir_entity *entity) { - set_entity_backend_marked(entity, 1); be_emit_ident(get_entity_ld_ident(entity)); } diff --git a/ir/be/arm/bearch_arm.c b/ir/be/arm/bearch_arm.c index ae5b384d8..9e14232e3 100644 --- a/ir/be/arm/bearch_arm.c +++ b/ir/be/arm/bearch_arm.c @@ -729,7 +729,7 @@ static arch_env_t *arm_init(FILE *file_handle) { static void arm_done(void *self) { arm_isa_t *isa = self; - be_gas_emit_decls(isa->arch_env.main_env, 1); + be_gas_emit_decls(isa->arch_env.main_env); be_emit_exit(); free(self); diff --git a/ir/be/begnuas.c b/ir/be/begnuas.c index f67f76366..f9a3bb0d0 100644 --- a/ir/be/begnuas.c +++ b/ir/be/begnuas.c @@ -37,7 +37,6 @@ #include "tv.h" #include "irnode.h" #include "irprog.h" -#include "pdeq.h" #include "entity_t.h" #include "error.h" @@ -48,7 +47,7 @@ /** by default, we generate assembler code for the Linux gas */ object_file_format_t be_gas_object_file_format = OBJECT_FILE_FORMAT_ELF; bool be_gas_emit_types = true; -char be_gas_elf_type_char = '@'; +char be_gas_elf_type_char = '@'; static be_gas_section_t current_section = (be_gas_section_t) -1; @@ -223,8 +222,7 @@ void be_gas_emit_function_epilog(ir_entity *entity) */ typedef struct _be_gas_decl_env { be_gas_section_t section; - waitq *worklist; /**< A worklist we use to place not yet handled entities on. */ - const be_main_env_t *main_env; + const be_main_env_t *main_env; } be_gas_decl_env_t; /************************************************************************/ @@ -406,10 +404,6 @@ static void do_dump_atomic_init(be_gas_decl_env_t *env, ir_node *init) case symconst_addr_ent: ent = get_SymConst_entity(init); - if (!is_entity_backend_marked(ent)) { - waitq_put(env->worklist, ent); - set_entity_backend_marked(ent, 1); - } be_gas_emit_entity(ent); break; @@ -1266,48 +1260,21 @@ static void dump_global(be_gas_decl_env_t *env, const ir_entity *ent) * * @param gt a global like type, either the global or the TLS one * @param env an environment - * @param only_emit_marked if non-zero, external allocated entities that do not have - * its visited flag set are ignored */ -static void be_gas_dump_globals(ir_type *gt, be_gas_decl_env_t *env, - int only_emit_marked) +static void be_gas_dump_globals(ir_type *gt, be_gas_decl_env_t *env) { int i, n = get_compound_n_members(gt); - waitq *worklist = new_waitq(); - - if (only_emit_marked) { - for (i = 0; i < n; i++) { - ir_entity *ent = get_compound_member(gt, i); - if (is_entity_backend_marked(ent) || entity_has_definition(ent)) { - waitq_put(worklist, ent); - set_entity_backend_marked(ent, 1); - } - } - } else { - for (i = 0; i < n; i++) { - ir_entity *ent = get_compound_member(gt, i); - set_entity_backend_marked(ent, 1); - waitq_put(worklist, ent); - } - } - - env->worklist = worklist; - - while (!waitq_empty(worklist)) { - ir_entity *ent = waitq_get(worklist); + for (i = 0; i < n; i++) { + ir_entity *ent = get_compound_member(gt, i); dump_global(env, ent); } - - del_waitq(worklist); - env->worklist = NULL; } /************************************************************************/ /* Generate all entities. */ -void be_gas_emit_decls(const be_main_env_t *main_env, - int only_emit_marked_entities) +void be_gas_emit_decls(const be_main_env_t *main_env) { be_gas_decl_env_t env; memset(&env, 0, sizeof(env)); @@ -1316,16 +1283,12 @@ void be_gas_emit_decls(const be_main_env_t *main_env, env.main_env = main_env; env.section = (be_gas_section_t) -1; - be_gas_dump_globals(get_glob_type(), &env, only_emit_marked_entities); - be_gas_dump_globals(get_tls_type(), &env, only_emit_marked_entities); - be_gas_dump_globals(get_segment_type(IR_SEGMENT_CONSTRUCTORS), &env, - only_emit_marked_entities); - be_gas_dump_globals(get_segment_type(IR_SEGMENT_DESTRUCTORS), &env, - only_emit_marked_entities); - be_gas_dump_globals(main_env->pic_symbols_type, &env, - only_emit_marked_entities); - be_gas_dump_globals(main_env->pic_trampolines_type, &env, - only_emit_marked_entities); + be_gas_dump_globals(get_glob_type(), &env); + be_gas_dump_globals(get_tls_type(), &env); + be_gas_dump_globals(get_segment_type(IR_SEGMENT_CONSTRUCTORS), &env); + be_gas_dump_globals(get_segment_type(IR_SEGMENT_DESTRUCTORS), &env); + be_gas_dump_globals(main_env->pic_symbols_type, &env); + be_gas_dump_globals(main_env->pic_trampolines_type, &env); /** * ".subsections_via_symbols marks object files which are OK to divide diff --git a/ir/be/begnuas.h b/ir/be/begnuas.h index 97660fe5c..a7d7d6dcf 100644 --- a/ir/be/begnuas.h +++ b/ir/be/begnuas.h @@ -65,11 +65,8 @@ extern char be_gas_elf_type_char; * Generate all entities. * @param main_env the main backend environment * @param emit_commons if non-zero, emit commons (non-local uninitialized entities) - * @param only_emit_marked if non-zero, external allocated entities that do not have - * its visited flag set are ignored */ -void be_gas_emit_decls(const be_main_env_t *main_env, - int only_emit_marked_entities); +void be_gas_emit_decls(const be_main_env_t *main_env); /** * Emit an entity (the entities name or a block label) diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index b68105eb9..3b3658d99 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -1732,7 +1732,7 @@ static void ia32_done(void *self) ia32_isa_t *isa = self; /* emit now all global declarations */ - be_gas_emit_decls(isa->arch_env.main_env, 1); + be_gas_emit_decls(isa->arch_env.main_env); pmap_destroy(isa->regs_16bit); pmap_destroy(isa->regs_8bit); diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index e149ab4c1..4716f55f4 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -282,7 +282,6 @@ void ia32_emit_source_register(const ir_node *node, int pos) static void ia32_emit_entity(ir_entity *entity, int no_pic_adjust) { - set_entity_backend_marked(entity, 1); be_gas_emit_entity(entity); if (get_entity_owner(entity) == get_tls_type()) { @@ -2415,7 +2414,6 @@ static void bemit_entity(ir_entity *entity, bool entity_sign, int offset, be_emit_cstring("\t.long "); if (entity_sign) be_emit_char('-'); - set_entity_backend_marked(entity, 1); be_gas_emit_entity(entity); if (get_entity_owner(entity) == get_tls_type()) { diff --git a/ir/be/mips/bearch_mips.c b/ir/be/mips/bearch_mips.c index c49a0bdb0..5f744302c 100644 --- a/ir/be/mips/bearch_mips.c +++ b/ir/be/mips/bearch_mips.c @@ -357,7 +357,7 @@ static void mips_done(void *self) { mips_isa_t *isa = self; - be_gas_emit_decls(isa->arch_env.main_env, 1); + be_gas_emit_decls(isa->arch_env.main_env); be_emit_exit(); free(isa); diff --git a/ir/be/ppc32/bearch_ppc32.c b/ir/be/ppc32/bearch_ppc32.c index f4e7747ce..64a67a093 100644 --- a/ir/be/ppc32/bearch_ppc32.c +++ b/ir/be/ppc32/bearch_ppc32.c @@ -504,7 +504,6 @@ static void ppc32_collect_symconsts_walk(ir_node *node, void *env) { if (is_SymConst(node)) { ir_entity *ent = get_SymConst_entity(node); - set_entity_backend_marked(ent, 1); pset_insert_ptr(symbol_set, ent); } } @@ -561,7 +560,7 @@ static void ppc32_dump_indirect_symbols(ppc32_isa_t *isa) { static void ppc32_done(void *self) { ppc32_isa_t *isa = self; - be_gas_emit_decls(isa->arch_env.main_env, 1); + be_gas_emit_decls(isa->arch_env.main_env); be_gas_emit_switch_section(GAS_SECTION_DATA); ppc32_dump_indirect_symbols(isa); diff --git a/ir/be/ppc32/ppc32_emitter.c b/ir/be/ppc32/ppc32_emitter.c index b49c38e32..f851188d9 100644 --- a/ir/be/ppc32/ppc32_emitter.c +++ b/ir/be/ppc32/ppc32_emitter.c @@ -257,7 +257,6 @@ static void emit_be_Call(const ir_node *irn) { ir_entity *call_ent = be_Call_get_entity(irn); if (call_ent) { - set_entity_backend_marked(call_ent, 1); be_emit_irprintf("\tbl %s", get_entity_ld_name(call_ent)); } else { be_emit_cstring("\tmtlr "); diff --git a/ir/be/sparc/bearch_sparc.c b/ir/be/sparc/bearch_sparc.c index 5d27934bb..cc71072b8 100644 --- a/ir/be/sparc/bearch_sparc.c +++ b/ir/be/sparc/bearch_sparc.c @@ -389,7 +389,7 @@ static void sparc_done(void *self) sparc_isa_t *isa = self; /* emit now all global declarations */ - be_gas_emit_decls(isa->arch_env.main_env, 0); + be_gas_emit_decls(isa->arch_env.main_env); be_emit_exit(); free(self); diff --git a/ir/be/sparc/sparc_emitter.c b/ir/be/sparc/sparc_emitter.c index 04ed07a4f..e03fb33d6 100644 --- a/ir/be/sparc/sparc_emitter.c +++ b/ir/be/sparc/sparc_emitter.c @@ -223,7 +223,6 @@ static void sparc_emit_cfop_target(const ir_node *node) */ static void sparc_emit_entity(ir_entity *entity) { - set_entity_backend_marked(entity, 1); be_emit_ident(get_entity_ld_ident(entity)); } diff --git a/ir/tr/entity.c b/ir/tr/entity.c index 2af1a032e..8d92a070c 100644 --- a/ir/tr/entity.c +++ b/ir/tr/entity.c @@ -113,7 +113,6 @@ new_rd_entity(dbg_info *db, ir_type *owner, ident *name, ir_type *type) res->aligned = align_is_aligned; res->usage = ir_usage_unknown; res->compiler_gen = 0; - res->backend_marked = 0; res->offset = -1; res->offset_bit_remainder = 0; res->alignment = 0; @@ -479,16 +478,6 @@ void (set_entity_compiler_generated)(ir_entity *ent, int flag) { _set_entity_compiler_generated(ent, flag); } /* set_entity_compiler_generated */ -/* Checks if an entity is marked by the backend */ -int (is_entity_backend_marked)(const ir_entity *ent) { - return _is_entity_backend_marked(ent); -} /* is_entity_backend_marked */ - -/* Sets/resets the compiler generated flag */ -void (set_entity_backend_marked)(ir_entity *ent, int flag) { - _set_entity_backend_marked(ent, flag); -} /* set_entity_backend_marked */ - ir_entity_usage (get_entity_usage)(const ir_entity *ent) { return _get_entity_usage(ent); } diff --git a/ir/tr/entity_t.h b/ir/tr/entity_t.h index d0c61f4d2..2aa1a1756 100644 --- a/ir/tr/entity_t.h +++ b/ir/tr/entity_t.h @@ -126,8 +126,6 @@ struct ir_entity { see ir_entity_usage. */ unsigned compiler_gen:1; /**< If set, this entity was compiler generated. */ - unsigned backend_marked:1; /**< If set, this entity was marked by the - backend for emission. */ unsigned visibility:3; /**< @deprecated */ unsigned allocation:3; /**< @deprecated */ unsigned peculiarity:3; /**< @deprecated */ @@ -293,18 +291,6 @@ _set_entity_compiler_generated(ir_entity *ent, int flag) { ent->compiler_gen = flag ? 1 : 0; } -static inline int -_is_entity_backend_marked(const ir_entity *ent) { - assert(ent && ent->kind == k_entity); - return ent->backend_marked; -} - -static inline void -_set_entity_backend_marked(ir_entity *ent, int flag) { - assert(ent && ent->kind == k_entity); - ent->backend_marked = flag ? 1 : 0; -} - static inline ir_entity_usage _get_entity_usage(const ir_entity *ent) { assert(ent && ent->kind == k_entity); @@ -432,8 +418,6 @@ int is_entity_final(const ir_entity *entity); #define set_entity_align(ent, a) _set_entity_align(ent, a) #define is_entity_compiler_generated(ent) _is_entity_compiler_generated(ent) #define set_entity_compiler_generated(ent, flag) _set_entity_compiler_generated(ent, flag) -#define is_entity_backend_marked(ent) _is_entity_backend_marked(ent) -#define set_entity_backend_marked(ent, flag) _set_entity_backend_marked(ent, flag) #define get_entity_usage(ent) _get_entity_usage(ent) #define set_entity_usage(ent, flags) _set_entity_usage(ent, flags) #define get_entity_offset(ent) _get_entity_offset(ent) -- 2.20.1