- switch (get_irn_opcode(node)) { /* node label */
- case iro_SymConst:
- kind = get_SymConst_kind(node);
- if (kind == symconst_type_tag || kind == symconst_size)
- do_type_walk((type_or_ent *)get_SymConst_type(node), pre, post, env);
- else if (kind == symconst_addr_ent)
- do_type_walk((type_or_ent *)get_SymConst_entity(node), pre, post, env);
- break;
- case iro_Sel:
- do_type_walk((type_or_ent *)get_Sel_entity(node), pre, post, env);
- break;
- case iro_Call:
- do_type_walk((type_or_ent *)get_Call_type(node), pre, post, env);
- break;
- case iro_Alloc:
- do_type_walk((type_or_ent *)get_Alloc_type(node), pre, post, env);
- break;
- case iro_Free:
- do_type_walk((type_or_ent *)get_Free_type(node), pre, post, env);
- break;
- case iro_Cast:
- do_type_walk((type_or_ent *)get_Cast_type(node), pre, post, env);
- break;
- default:
- break;
- }
+ ent = get_irn_entity_attr(node);
+ if (ent)
+ do_type_walk((type_or_ent *)ent, pre, post, env);
+ tp = get_irn_type_attr(node);
+ if (tp)
+ do_type_walk((type_or_ent *)tp, pre, post, env);