Exemplo n.º 1
0
static void be_vdiagnosticf(ir_node const *const node, char const *const kind, char const *const fmt, va_list ap)
{
	FILE *const out = stderr;

	if (node) {
		ir_fprintf(out, "%+F", node);

		dbg_info *const dbgi = get_irn_dbg_info(node);
		src_loc_t const loc  = ir_retrieve_dbg_info(dbgi);
		if (loc.file) {
			ir_fprintf(out, " (%s", loc.file);
			if (loc.line != 0) {
				ir_fprintf(out, ":%u", loc.line);
				if (loc.column != 0)
					ir_fprintf(out, ":%u", loc.column);
			}
			fputc(')', out);
		}

		fputs(": ", out);
	}

	ir_fprintf(out, "%s: ", kind);
	ir_vfprintf(out, fmt, ap);
	fputc('\n', out);
}
Exemplo n.º 2
0
void ir_dbg_info_snprint(char *buf, size_t bufsize, const dbg_info *dbg)
{
	src_loc_t const loc = ir_retrieve_dbg_info(dbg);

	if (!loc.file) {
		assert(bufsize > 0);
		buf[0] = 0;
		return;
	}
	if (loc.column == 0) {
		snprintf(buf, bufsize, "%s:%u", loc.file, loc.line);
	} else {
		snprintf(buf, bufsize, "%s:%u:%u", loc.file, loc.line, loc.column);
	}
}
Exemplo n.º 3
0
void be_emit_finish_line_gas(const ir_node *node)
{
	if (node && be_options.verbose_asm) {
		be_emit_pad_comment();
		dbg_info   *const dbg = get_irn_dbg_info(node);
		src_loc_t   const loc = ir_retrieve_dbg_info(dbg);
		char const *const fmt =
			!loc.file       ? "/* %+F */\n"       :
			loc.line   == 0 ? "/* %+F %s */\n"    :
			loc.column == 0 ? "/* %+F %s:%u */\n" :
			/*             */ "/* %+F %s:%u:%u */\n";
		be_emit_irprintf(fmt, node, loc.file, loc.line, loc.column);
	} else {
		be_emit_char('\n');
	}
	be_emit_write_line();
}