removed unitialized used vartiable
[libfirm] / ir / be / beemitter.c
1 /*
2  * Author:      Matthias Braun
3  * Date:                12.03.2007
4  * Copyright:   (c) Universitaet Karlsruhe
5  * License:     This file is protected by GPL -  GNU GENERAL PUBLIC LICENSE.
6  */
7 #ifdef HAVE_CONFIG_H
8 #include "config.h"
9 #endif
10
11 #include "beemitter.h"
12 #include "xmalloc.h"
13 #include "irprintf.h"
14
15 void be_emit_init_env(be_emit_env_t *env, FILE *F)
16 {
17         memset(env, 0, sizeof(env[0]));
18
19         env->F = F;
20         obstack_init(&env->obst);
21         env->linelength = 0;
22 }
23
24 void be_emit_destroy_env(be_emit_env_t *env)
25 {
26         obstack_free(&env->obst, NULL);
27 }
28
29 void be_emit_ident(be_emit_env_t *env, ident *id)
30 {
31         size_t len = get_id_strlen(id);
32         const char *str = get_id_str(id);
33
34         be_emit_string_len(env, str, len);
35 }
36
37 void be_emit_irvprintf(be_emit_env_t *env, const char *fmt, va_list args)
38 {
39         char buf[256];
40
41         ir_vsnprintf(buf, sizeof(buf), fmt, args);
42         be_emit_string(env, buf);
43 }
44
45 void be_emit_irprintf(be_emit_env_t *env, const char *fmt, ...)
46 {
47         va_list ap;
48
49         va_start(ap, fmt);
50         be_emit_irvprintf(env, fmt, ap);
51         va_end(ap);
52 }
53
54 void be_emit_write_line(be_emit_env_t *env)
55 {
56         char *finished_line = obstack_finish(&env->obst);
57
58         fwrite(finished_line, env->linelength, 1, env->F);
59         env->linelength = 0;
60         obstack_free(&env->obst, finished_line);
61 }
62
63 void be_emit_pad_comment(be_emit_env_t *env)
64 {
65         while(env->linelength <= 30) {
66                 be_emit_char(env, ' ');
67         }
68         be_emit_cstring(env, "    ");
69 }
70
71 void be_emit_finish_line_gas(be_emit_env_t *env, const ir_node *node)
72 {
73         dbg_info *dbg;
74         const char *sourcefile;
75         unsigned lineno;
76
77         if(node == NULL) {
78                 be_emit_char(env, '\n');
79                 be_emit_write_line(env);
80                 return;
81         }
82
83         be_emit_pad_comment(env);
84         be_emit_cstring(env, "/* ");
85         be_emit_irprintf(env, "%+F ", node);
86
87         dbg = get_irn_dbg_info(node);
88         sourcefile = be_retrieve_dbg_info(dbg, &lineno);
89         if(sourcefile != NULL) {
90                 be_emit_string(env, sourcefile);
91                 be_emit_irprintf(env, ":%u", lineno);
92         }
93         be_emit_cstring(env, " */\n");
94         be_emit_write_line(env);
95 }