be_gas_section_t section;
waitq *worklist; /**< A worklist we use to place not yet handled entities on. */
} be_gas_decl_env_t;
be_gas_section_t section;
waitq *worklist; /**< A worklist we use to place not yet handled entities on. */
} be_gas_decl_env_t;
waitq_put(env->worklist, ent);
set_entity_backend_marked(ent, 1);
}
waitq_put(env->worklist, ent);
set_entity_backend_marked(ent, 1);
}
case symconst_ofs_ent:
ent = get_SymConst_entity(init);
#if 0 /* not needed, is it? */
case symconst_ofs_ent:
ent = get_SymConst_entity(init);
#if 0 /* not needed, is it? */
waitq_put(env->worklist, ent);
set_entity_backend_marked(ent, 1);
}
waitq_put(env->worklist, ent);
set_entity_backend_marked(ent, 1);
}
/* and the mode of the element type is an int of
* the same size as the byte mode */
mode = get_type_mode(element_type);
/* and the mode of the element type is an int of
* the same size as the byte mode */
mode = get_type_mode(element_type);
if (be_gas_flavour == GAS_FLAVOUR_MACH_O) {
be_emit_cstring("\t.ascii \"");
} else {
be_emit_cstring("\t.string \"");
if (be_gas_flavour == GAS_FLAVOUR_MACH_O) {
be_emit_cstring("\t.ascii \"");
} else {
be_emit_cstring("\t.string \"");
type_size = get_type_size_bytes(type);
remaining_space = type_size - len;
assert(remaining_space >= 0);
type_size = get_type_size_bytes(type);
remaining_space = type_size - len;
assert(remaining_space >= 0);
const ir_initializer_t *sub_initializer
= get_initializer_compound_value(initializer, i);
const ir_initializer_t *sub_initializer
= get_initializer_compound_value(initializer, i);
case IR_INITIALIZER_TARVAL: {
assert(get_tarval_mode(get_initializer_tarval_value(initializer)) == get_type_mode(type));
return get_type_size_bytes(type);
case IR_INITIALIZER_TARVAL: {
assert(get_tarval_mode(get_initializer_tarval_value(initializer)) == get_type_mode(type));
return get_type_size_bytes(type);
case IR_INITIALIZER_NULL:
return get_type_size_bytes(type);
case IR_INITIALIZER_COMPOUND: {
case IR_INITIALIZER_NULL:
return get_type_size_bytes(type);
case IR_INITIALIZER_COMPOUND: {
return get_type_size_bytes(type);
} else {
unsigned n_entries
= get_initializer_compound_n_entries(initializer);
unsigned i;
unsigned initializer_size = get_type_size_bytes(type);
return get_type_size_bytes(type);
} else {
unsigned n_entries
= get_initializer_compound_n_entries(initializer);
unsigned i;
unsigned initializer_size = get_type_size_bytes(type);
ir_entity *entity = get_compound_member(type, i);
ir_type *type = get_entity_type(entity);
ir_entity *entity = get_compound_member(type, i);
ir_type *type = get_entity_type(entity);
unsigned offset = get_entity_offset(entity);
unsigned size = get_initializer_size(sub_initializer, type);
unsigned offset = get_entity_offset(entity);
unsigned size = get_initializer_size(sub_initializer, type);
vals->kind = TARVAL;
vals->v.tarval = get_initializer_tarval_value(initializer);
assert(get_type_mode(type) == get_tarval_mode(vals->v.tarval));
vals->kind = TARVAL;
vals->v.tarval = get_initializer_tarval_value(initializer);
assert(get_type_mode(type) == get_tarval_mode(vals->v.tarval));
ir_type *element_type = get_array_element_type(type);
size_t skip = get_type_size_bytes(element_type);
size_t alignment = get_type_alignment_bytes(element_type);
size_t misalign = skip % alignment;
ir_type *element_type = get_array_element_type(type);
size_t skip = get_type_size_bytes(element_type);
size_t alignment = get_type_alignment_bytes(element_type);
size_t misalign = skip % alignment;
ir_initializer_t *sub_initializer
= get_initializer_compound_value(initializer, i);
ir_initializer_t *sub_initializer
= get_initializer_compound_value(initializer, i);
ir_entity *member = get_compound_member(type, i);
size_t offset = get_entity_offset(member);
ir_type *subtype = get_entity_type(member);
ir_entity *member = get_compound_member(type, i);
size_t offset = get_entity_offset(member);
ir_type *subtype = get_entity_type(member);
(value_len != 8 && value_len != 16 && value_len != 32
&& value_len != 64)) {
dump_bitfield(&vals[offset], offset_bits,
(value_len != 8 && value_len != 16 && value_len != 32
&& value_len != 64)) {
dump_bitfield(&vals[offset], offset_bits,
* In the worst case, every initializer allocates one byte.
* Moreover, initializer might be big, do not allocate on stack.
*/
* In the worst case, every initializer allocates one byte.
* Moreover, initializer might be big, do not allocate on stack.
*/
dump_atomic_init(env, vals[k].v.value);
elem_size = get_mode_size_bytes(get_irn_mode(vals[k].v.value));
} else {
elem_size = 0;
}
dump_atomic_init(env, vals[k].v.value);
elem_size = get_mode_size_bytes(get_irn_mode(vals[k].v.value));
} else {
elem_size = 0;
}
* In the worst case, every initializer allocates one byte.
* Moreover, initializer might be big, do not allocate on stack.
*/
* In the worst case, every initializer allocates one byte.
* Moreover, initializer might be big, do not allocate on stack.
*/
dump_atomic_init(env, vals[k].v.value);
skip = get_mode_size_bytes(get_irn_mode(vals[k].v.value)) - 1;
} else {
dump_atomic_init(env, vals[k].v.value);
skip = get_mode_size_bytes(get_irn_mode(vals[k].v.value)) - 1;
} else {
/* dump global type */
env.section = (be_gas_section_t) -1;
be_gas_dump_globals(get_glob_type(), &env, only_emit_marked_entities);
/* dump global type */
env.section = (be_gas_section_t) -1;
be_gas_dump_globals(get_glob_type(), &env, only_emit_marked_entities);