From 06e26343fcd27ac64fc5a775372a6affb172f08b Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Thu, 20 Dec 2007 12:36:09 +0000 Subject: [PATCH] Always set the alignment and set the layout_fixed flag for array types, even if they are flexible array members. [r18813] --- ast2firm.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ast2firm.c b/ast2firm.c index d6be4e7..0eb5f9f 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -430,22 +430,23 @@ static ir_type *create_array_type(array_type_t *type) dbg_info *dbgi = get_dbg_info(&type->type.source_position); ir_type *ir_type = new_d_type_array(id, 1, ir_element_type, dbgi); + const int align = get_type_alignment_bytes(ir_element_type); + set_type_alignment_bytes(ir_type, align); + if(type->size != NULL) { int n_elements = fold_constant(type->size); set_array_bounds_int(ir_type, 0, 0, n_elements); size_t elemsize = get_type_size_bytes(ir_element_type); - int align = get_type_alignment_bytes(ir_element_type); if(elemsize % align > 0) { elemsize += align - (elemsize % align); } set_type_size_bytes(ir_type, n_elements * elemsize); - set_type_alignment_bytes(ir_type, align); - set_type_state(ir_type, layout_fixed); } else { set_array_lower_bound_int(ir_type, 0, 0); } + set_type_state(ir_type, layout_fixed); return ir_type; } -- 2.20.1