/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
case iro_Const:
tv = get_Const_tarval(init);
- /* it's a arithmetic value */
+ /* it's an arithmetic value */
emit_arith_tarval(tv, bytes);
return;
if (!is_type_variable_size(type)) {
return get_type_size_bytes(type);
} else {
- unsigned n_entries
+ size_t n_entries
= get_initializer_compound_n_entries(initializer);
- unsigned i;
+ size_t i;
unsigned initializer_size = get_type_size_bytes(type);
for (i = 0; i < n_entries; ++i) {
ir_entity *entity = get_compound_member(type, i);
if (mode != NULL) {
size_t offset_bits
= get_entity_offset_bits_remainder(member);
- size_t value_len = get_mode_size_bits(mode);
- if (offset_bits != 0 ||
- (value_len != 8 && value_len != 16 && value_len != 32
- && value_len != 64) ||
- (is_Primitive_type(subtype) && get_primitive_base_type(subtype) != NULL)) {
+ if (is_Primitive_type(subtype)
+ && get_primitive_base_type(subtype) != NULL) {
emit_bitfield(&vals[offset], offset_bits,
sub_initializer, subtype);
continue;
+ } else {
+ assert(offset_bits == 0);
}
}
}
if (entity_is_null(entity)) {
- be_emit_irprintf("\t.space %u, 0\n", get_type_size_bytes(type));
- be_emit_write_line();
+ unsigned size = get_type_size_bytes(type);
+ if (size > 0) {
+ be_emit_irprintf("\t.space %u, 0\n", get_type_size_bytes(type));
+ be_emit_write_line();
+ }
} else if (entity_has_compound_ent_values(entity)) {
emit_compound_graph_init(env, entity);
} else {
*/
static void be_gas_emit_globals(ir_type *gt, be_gas_decl_env_t *env)
{
- int i, n = get_compound_n_members(gt);
+ size_t i, n = get_compound_n_members(gt);
for (i = 0; i < n; i++) {
ir_entity *ent = get_compound_member(gt, i);