X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeemitter.c;h=9b2d6a08fd242c782b5f9886258cc06d16fd6087;hb=5474a1c188c9d59eea2c915515980cd9cbab58d8;hp=3de970a08e2da6ebdd8b7f48bf5133d36fce5b49;hpb=b0e09fe0aada2e5d9dc0299e969b3c93c1092d97;p=libfirm diff --git a/ir/be/beemitter.c b/ir/be/beemitter.c index 3de970a08..9b2d6a08f 100644 --- a/ir/be/beemitter.c +++ b/ir/be/beemitter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -22,25 +22,22 @@ * @brief Interface for assembler output. * @author Matthias Braun * @date 12.03.2007 - * @version $Id$ */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include "beemitter.h" +#include "irnode_t.h" #include "irprintf.h" #include "ident.h" #include "tv.h" +#include "dbginfo.h" FILE *emit_file; struct obstack emit_obst; -int emit_linelength; void be_emit_init(FILE *file) { emit_file = file; - emit_linelength = 0; obstack_init(&emit_obst); } @@ -57,7 +54,7 @@ void be_emit_ident(ident *id) be_emit_string_len(str, len); } -void be_emit_tarval(tarval *tv) +void be_emit_tarval(ir_tarval *tv) { char buf[64]; @@ -84,19 +81,20 @@ void be_emit_irprintf(const char *fmt, ...) void be_emit_write_line(void) { - char *finished_line = obstack_finish(&emit_obst); + size_t len = obstack_object_size(&emit_obst); + char *line = (char*)obstack_finish(&emit_obst); - fwrite(finished_line, emit_linelength, 1, emit_file); - emit_linelength = 0; - obstack_free(&emit_obst, finished_line); + fwrite(line, 1, len, emit_file); + obstack_free(&emit_obst, line); } void be_emit_pad_comment(void) { - while(emit_linelength <= 30) { - be_emit_char(' '); - } - be_emit_cstring(" "); + size_t len = obstack_object_size(&emit_obst); + if (len > 30) + len = 30; + /* 34 spaces */ + be_emit_string_len(" ", 34 - len); } void be_emit_finish_line_gas(const ir_node *node) @@ -105,7 +103,7 @@ void be_emit_finish_line_gas(const ir_node *node) const char *sourcefile; unsigned lineno; - if(node == NULL) { + if (node == NULL) { be_emit_char('\n'); be_emit_write_line(); return; @@ -116,8 +114,8 @@ void be_emit_finish_line_gas(const ir_node *node) be_emit_irprintf("%+F ", node); dbg = get_irn_dbg_info(node); - sourcefile = be_retrieve_dbg_info(dbg, &lineno); - if(sourcefile != NULL) { + sourcefile = ir_retrieve_dbg_info(dbg, &lineno); + if (sourcefile != NULL) { be_emit_string(sourcefile); be_emit_irprintf(":%u", lineno); }