adapt to latest libfirm
authorMatthias Braun <matze@braunis.de>
Mon, 1 Jun 2009 08:53:42 +0000 (08:53 +0000)
committerMatthias Braun <matze@braunis.de>
Mon, 1 Jun 2009 08:53:42 +0000 (08:53 +0000)
[r26083]

ast2firm.c
driver/gen_firm_asm.c

index 78006e5..d08bc72 100644 (file)
@@ -3427,19 +3427,15 @@ static ir_node *get_label_block(label_t *label)
  * Pointer to a label.  This is used for the
  * GNU address-of-label extension.
  */
-static ir_node *label_address_to_firm(
-               const label_address_expression_t *label)
+static ir_node *label_address_to_firm(const label_address_expression_t *label)
 {
-       ir_node    *block = get_label_block(label->label);
-       ir_label_t  nr    = get_Block_label(block);
+       dbg_info  *dbgi   = get_dbg_info(&label->base.source_position);
+       ir_node   *block  = get_label_block(label->label);
+       ir_entity *entity = create_Block_entity(block);
 
-       if (nr == 0) {
-               nr = get_irp_next_label_nr();
-               set_Block_label(block, nr);
-       }
        symconst_symbol value;
-       value.label = nr;
-       return new_SymConst(mode_P_code, value, symconst_label);
+       value.entity_p = entity;
+       return new_d_SymConst(dbgi, mode_P_code, value, symconst_addr_ent);
 }
 
 /**
index 8d30244..ad55dee 100644 (file)
@@ -530,7 +530,6 @@ static void generate_code_SymConst(FILE *f, ir_node *n)
   ident *id;
   ir_type *tp;
   ir_entity *ent;
-  ir_label_t label;
   symconst_kind kind = get_SymConst_kind(n);
   const char *k_name = "NULL";
   const char *str;
@@ -572,11 +571,6 @@ static void generate_code_SymConst(FILE *f, ir_node *n)
     fprintf(f, "  sym.ident_p = new_id_from_chars(\"%s\", %d);\n", str, get_id_strlen(id));
     k_name = "symconst_enum_const";
     break;
-  case symconst_label:
-    label = get_SymConst_label(n);
-    fprintf(f, "  sym.label = %lu;\n", label);
-    k_name = "symconst_label";
-    break;
   }
   name(f, "  ", n, " = new_r_SymConst(irg, ");
   name(f, NULL, get_nodes_block(n), ", sym, ");