const ir_switch_table *table = get_Switch_table(node);
unsigned n_outs = get_Switch_n_outs(node);
ir_node *new_node;
- ir_entity *entity;
assert(get_mode_size_bits(sel_mode) <= 32);
assert(!mode_is_float(sel_mode));
if (get_mode_size_bits(sel_mode) < 32)
new_sel = transform_upconv(sel, node);
- entity = new_entity(NULL, id_unique("TBL%u"), get_unknown_type());
+ ir_type *const utype = get_unknown_type();
+ ir_entity *const entity = new_entity(utype, id_unique("TBL%u"), utype);
set_entity_visibility(entity, ir_visibility_private);
add_entity_linkage(entity, IR_LINKAGE_CONSTANT);
ir_node *new_selector = be_transform_node(selector);
const ir_switch_table *table = get_Switch_table(node);
unsigned n_outs = get_Switch_n_outs(node);
- ir_entity *entity;
ir_node *table_address;
ir_node *idx;
ir_node *load;
/* switch with smaller mode not implemented yet */
assert(get_mode_size_bits(get_irn_mode(selector)) == 32);
- entity = new_entity(NULL, id_unique("TBL%u"), get_unknown_type());
+ ir_type *const utype = get_unknown_type();
+ ir_entity *const entity = new_entity(utype, id_unique("TBL%u"), utype);
set_entity_visibility(entity, ir_visibility_private);
add_entity_linkage(entity, IR_LINKAGE_CONSTANT);
if (ent) {
ir_type *ent_type = get_entity_owner(ent);
-
- if (ent_type) {
- ir_fprintf(stderr, "\nFIRM: irn_verify_irg() %+F::%s failed\n",
- ent_type, get_entity_name(ent));
- } else {
- fprintf(stderr, "\nFIRM: irn_verify_irg() <NULL>::%s failed\n", get_entity_name(ent));
- }
+ ir_fprintf(stderr, "\nFIRM: irn_verify_irg() %+F::%s failed\n", ent_type, get_entity_name(ent));
} else {
fprintf(stderr, "\nFIRM: irn_verify_irg() <IRG %p> failed\n", (void *)irg);
}
static ir_entity *intern_new_entity(ir_type *owner, ir_entity_kind kind,
ident *name, ir_type *type, dbg_info *dbgi)
{
+ assert(owner);
+
ir_entity *res = XMALLOCZ(ir_entity);
res->kind = k_entity;
#endif
/* Remember entity in its owner. */
- if (owner != NULL)
+ if (is_compound_type(owner))
add_compound_member(owner, res);
res->visit = 0;
res->attr.mtd_attr.param_access = NULL;
res->attr.mtd_attr.param_weight = NULL;
res->attr.mtd_attr.irg = NULL;
- } else if (owner != NULL
- && (is_compound_type(owner) && !(owner->flags & tf_segment))) {
+ } else if (is_compound_type(owner) && !(owner->flags & tf_segment)) {
res = intern_new_entity(owner, IR_ENTITY_COMPOUND_MEMBER, name, type, db);
} else {
res = intern_new_entity(owner, IR_ENTITY_NORMAL, name, type, db);
void free_entity(ir_entity *ent)
{
- if (ent->owner != NULL && !is_Array_type(ent->owner))
+ if (is_compound_type(ent->owner))
remove_compound_member(ent->owner, ent);
assert(ent && ent->kind == k_entity);
void ir_init_entity(ir_prog *irp)
{
- ident *id = new_id_from_str(UNKNOWN_ENTITY_NAME);
- irp->unknown_entity = intern_new_entity(NULL, IR_ENTITY_UNKNOWN, id,
- irp->unknown_type, NULL);
+ ident *const id = new_id_from_str(UNKNOWN_ENTITY_NAME);
+ ir_type *const utype = get_unknown_type();
+ irp->unknown_entity = intern_new_entity(utype, IR_ENTITY_UNKNOWN, id, utype, NULL);
set_entity_visibility(irp->unknown_entity, ir_visibility_external);
set_entity_ld_ident(irp->unknown_entity, id);
hook_new_entity(irp->unknown_entity);
res->attr.aa.order[i] = i;
}
+ ident *const id = new_id_from_chars("elem_ent", 8);
res->attr.aa.element_type = element_type;
- res->attr.aa.element_ent
- = new_entity(NULL, new_id_from_chars("elem_ent", 8), element_type);
- res->attr.aa.element_ent->owner = res;
+ res->attr.aa.element_ent = new_entity(res, id, element_type);
hook_new_type(res);
return res;