used entities are now marked
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 5 May 2007 21:57:47 +0000 (21:57 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 5 May 2007 21:57:47 +0000 (21:57 +0000)
removed deleted header

[r13658]

ir/be/arm/arm_emitter.c
ir/be/arm/arm_transform.c
ir/be/arm/bearch_arm.c

index 44efb2a..7c83cb7 100644 (file)
@@ -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);
index 2ecc235..b189b96 100644 (file)
@@ -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");
index 7af7c14..db6c9c4 100644 (file)
@@ -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;
 }