projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move set_entity_irg to private API
[libfirm]
/
ir
/
tr
/
type.c
diff --git
a/ir/tr/type.c
b/ir/tr/type.c
index
2cf6499
..
eb37698
100644
(file)
--- a/
ir/tr/type.c
+++ b/
ir/tr/type.c
@@
-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);
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);
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);
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)
}
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)
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");
}
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);
long get_type_nr(const ir_type *tp)
{
assert(tp);
@@
-430,7
+425,6
@@
int (is_type)(const void *thing)
return _is_type(thing);
}
return _is_type(thing);
}
-/* Checks whether two types are structural equal.*/
int equal_type(ir_type *typ1, ir_type *typ2)
{
ir_entity **m;
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);
}
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);
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;
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);
/* 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];
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;
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);
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);
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;
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);
/* 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;
}
/* calculate offset and new type size */
offset = 0;
- frame_size +=
size
;
+ frame_size +=
delta
;
/* increase size to match alignment... */
if (alignment > frame_align) {
/* increase size to match alignment... */
if (alignment > frame_align) {