amd64: small changes w.r.t. stack alignment.
[libfirm] / ir / be / beemitter.c
index 3de970a..808aa31 100644 (file)
@@ -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.
  *
  * @date        12.03.2007
  * @version     $Id$
  */
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include "beemitter.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);
 }
 
@@ -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 = 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);
        }