static void def_error_fn(const char *msg, const loc_t *loc) { if (message_style == MESSAGE_COMPACT) fmt_loc(stderr, loc); errorf("%s", msg); if (message_style == MESSAGE_FULL) fmt_loc(stderr, loc); }
static void msg_at(print_fn_t fn, const loc_t *loc, const char *fmt, va_list ap) { char *strp = prepare_msg(fmt, ap, false); if (message_style == MESSAGE_COMPACT) fmt_loc(stderr, loc); (*fn)("%s", strp); if (message_style == MESSAGE_FULL) fmt_loc(stderr, loc); free(strp); }
static void group_target(tree_t t, group_nets_ctx_t *ctx) { switch (tree_kind(t)) { case T_REF: group_ref(t, ctx, 0, -1); break; case T_ARRAY_REF: case T_ARRAY_SLICE: case T_RECORD_REF: { type_t type = tree_type(t); if (!type_known_width(type)) ungroup_name(t, ctx); else if (!group_name(t, ctx, 0, type_width(type))) ungroup_name(t, ctx); } break; case T_LITERAL: case T_OPEN: // Constant folding can cause this to appear break; case T_AGGREGATE: { const int nassocs = tree_assocs(t); for (int i = 0; i < nassocs; i++) group_target(tree_value(tree_assoc(t, i)), ctx); } break; default: fmt_loc(stdout, tree_loc(t)); fatal_trace("Cannot handle tree kind %s in group_target", tree_kind_str(tree_kind(t))); } }