+ get_mode_name(get_irn_mode(X)), tv ? tv_buf : ">NULL<");
+ }
+ else if (get_irn_op(X) == op_SymConst) {
+ switch (get_SymConst_kind(X)) {
+ case symconst_type_tag: /* type tag */
+ snprintf(tv_buf, sizeof(tv_buf), "<ID:%s>", get_type_name(get_SymConst_type(X)));
+ break;
+ case symconst_type_size: /* type size */
+ snprintf(tv_buf, sizeof(tv_buf), "<SIZE:%s>", get_type_name(get_SymConst_type(X)));
+ break;
+ case symconst_type_align: /* type alignment */
+ snprintf(tv_buf, sizeof(tv_buf), "<ALIGN:%s>", get_type_name(get_SymConst_type(X)));
+ break;
+ case symconst_addr_name: /* linker name */
+ snprintf(tv_buf, sizeof(tv_buf), "<EXT:%s>", get_id_str(get_SymConst_name(X)));
+ break;
+ case symconst_addr_ent: /* entity name */
+ snprintf(tv_buf, sizeof(tv_buf), "<%s>", get_entity_name(get_SymConst_entity(X)));
+ break;
+ case symconst_enum_const: /* enumeration constant */
+ snprintf(tv_buf, sizeof(tv_buf), "<ENUM:%s>", get_enumeration_name(get_SymConst_enum(X)));
+ break;
+ case symconst_label: /* label */
+ snprintf(tv_buf, sizeof(tv_buf), "<LABEL:%lu>", get_SymConst_label(X));
+ break;
+ default:
+ tv_buf[0] = '\0';
+ }
+ snprintf(buf, buflen, "%s%s%s%s", A("irn"), get_irn_opname(X),
+ get_mode_name(get_irn_mode(X)), tv_buf);