move set_entity_irg to private API
[libfirm] / ir / tr / type.c
index 2cf6499..eb37698 100644 (file)
@@ -86,16 +86,13 @@ void ir_init_type(void)
        firm_none_type = new_type(tpop_none, mode_BAD, NULL);
        set_type_size_bytes(firm_none_type, 0);
        set_type_state (firm_none_type, layout_fixed);
-       remove_irp_type(firm_none_type);
 
        firm_code_type = new_type(tpop_code, mode_ANY, NULL);
        set_type_state(firm_code_type, layout_fixed);
-       remove_irp_type(firm_code_type);
 
        firm_unknown_type = new_type(tpop_unknown, mode_ANY, NULL);
        set_type_size_bytes(firm_unknown_type, 0);
        set_type_state (firm_unknown_type, layout_fixed);
-       remove_irp_type(firm_unknown_type);
 }
 
 void ir_finish_type(void)
@@ -114,7 +111,6 @@ void ir_finish_type(void)
        }
 }
 
-/** the global type visited flag */
 ir_visited_t firm_type_visited;
 
 void (set_master_type_visited)(ir_visited_t val)
@@ -241,7 +237,6 @@ void set_type_mode(ir_type *tp, ir_mode *mode)
                assert(0 && "setting a mode is NOT allowed for this type");
 }
 
-/* Outputs a unique number for this node */
 long get_type_nr(const ir_type *tp)
 {
        assert(tp);
@@ -430,7 +425,6 @@ int (is_type)(const void *thing)
        return _is_type(thing);
 }
 
-/* Checks whether two types are structural equal.*/
 int equal_type(ir_type *typ1, ir_type *typ2)
 {
        ir_entity **m;
@@ -1484,7 +1478,6 @@ void free_array_attrs(ir_type *array)
        free(array->attr.aa.order);
 }
 
-/* manipulate private fields of array ir_type */
 size_t get_array_n_dimensions(const ir_type *array)
 {
        assert(array->type_op == type_array);
@@ -1960,9 +1953,6 @@ ir_type *new_type_frame(void)
 
        res->flags |= tf_frame_type;
 
-       /* Remove type from type list.  Must be treated differently than other types. */
-       remove_irp_type(res);
-
        /* It is not possible to derive from the frame type. Set the final flag. */
        set_class_final(res, 1);
 
@@ -2037,7 +2027,6 @@ ir_entity *frame_alloc_area(ir_type *frame_type, int size, unsigned alignment,
        ir_type *tp;
        ident *name;
        char buf[32];
-       unsigned frame_align;
        int offset, frame_size;
        static unsigned area_cnt = 0;
        static ir_type *a_byte = NULL;
@@ -2053,10 +2042,6 @@ ir_entity *frame_alloc_area(ir_type *frame_type, int size, unsigned alignment,
        snprintf(buf, sizeof(buf), "area%u", area_cnt++);
        name = new_id_from_str(buf);
 
-       /* align the size */
-       frame_align = get_type_alignment_bytes(frame_type);
-       size = (size + frame_align - 1) & ~(frame_align - 1);
-
        tp = new_type_array(1, a_byte);
        set_array_bounds_int(tp, 0, 0, size);
        set_type_alignment_bytes(tp, alignment);
@@ -2065,15 +2050,17 @@ ir_entity *frame_alloc_area(ir_type *frame_type, int size, unsigned alignment,
        frame_size = get_type_size_bytes(frame_type);
        if (at_start) {
                size_t i, n;
+               unsigned frame_align = get_type_alignment_bytes(frame_type);
+               unsigned delta = (size + frame_align - 1) & ~(frame_align - 1);
                /* fix all offsets so far */
                for (i = 0, n = get_class_n_members(frame_type); i < n; ++i) {
                        ir_entity *ent = get_class_member(frame_type, i);
 
-                       set_entity_offset(ent, get_entity_offset(ent) + size);
+                       set_entity_offset(ent, get_entity_offset(ent) + delta);
                }
                /* calculate offset and new type size */
                offset = 0;
-               frame_size += size;
+               frame_size += delta;
 
                /* increase size to match alignment... */
                if (alignment > frame_align) {