projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** empty log message ***
[libfirm]
/
ir
/
tr
/
type.c
diff --git
a/ir/tr/type.c
b/ir/tr/type.c
index
7c8a249
..
3288048
100644
(file)
--- a/
ir/tr/type.c
+++ b/
ir/tr/type.c
@@
-361,7
+361,7
@@
int get_type_alignment_bits(ir_type *tp) {
void
set_type_alignment_bits(ir_type *tp, int align) {
assert(tp && tp->kind == k_type);
void
set_type_alignment_bits(ir_type *tp, int align) {
assert(tp && tp->kind == k_type);
- assert((align
& (align - 1)) == 0
&& "type alignment not power of two");
+ assert((align
== -1 || (align & (align - 1)) == 0)
&& "type alignment not power of two");
/* Methods don't have an alignment. */
if (tp->type_op != type_method) {
tp->align = align;
/* Methods don't have an alignment. */
if (tp->type_op != type_method) {
tp->align = align;
@@
-370,7
+370,11
@@
set_type_alignment_bits(ir_type *tp, int align) {
void
set_type_alignment_bytes(ir_type *tp, int align) {
void
set_type_alignment_bytes(ir_type *tp, int align) {
- set_type_alignment_bits(tp, 8*align);
+ if (align == -1) {
+ set_type_alignment_bits(tp, -1);
+ } else {
+ set_type_alignment_bits(tp, 8*align);
+ }
}
/* Returns a human readable string for the enum entry. */
}
/* Returns a human readable string for the enum entry. */
@@
-1515,6
+1519,7
@@
void free_array_attrs (ir_type *array) {
assert(array && (array->type_op == type_array));
free(array->attr.aa.lower_bound);
free(array->attr.aa.upper_bound);
assert(array && (array->type_op == type_array));
free(array->attr.aa.lower_bound);
free(array->attr.aa.upper_bound);
+ free(array->attr.aa.order);
}
/* manipulate private fields of array ir_type */
}
/* manipulate private fields of array ir_type */
@@
-1947,8
+1952,8
@@
entity *frame_alloc_area(type *frame_type, int size, int alignment, int at_start
static unsigned area_cnt = 0;
static ir_type *a_byte = NULL;
static unsigned area_cnt = 0;
static ir_type *a_byte = NULL;
- assert(is_frame_type(
tp
));
- assert(get_type_state(
tp
) == layout_fixed);
+ assert(is_frame_type(
frame_type
));
+ assert(get_type_state(
frame_type
) == layout_fixed);
if (! a_byte)
a_byte = new_type_primitive(new_id_from_chars("byte", 4), mode_Bu);
if (! a_byte)
a_byte = new_type_primitive(new_id_from_chars("byte", 4), mode_Bu);