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
9a933dc
..
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 */