X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbegnuas.c;h=41cb56dc561fd54c1a922fc494745c378fb39d4d;hb=4a4a27eb58ddce1b4a00a537fb8922a72cc370f4;hp=e8f376077e8941de99dadf2c0e84c8aa3a7bfa16;hpb=d882970a19c9cc213452030740e1f2203b26abe4;p=libfirm diff --git a/ir/be/begnuas.c b/ir/be/begnuas.c index e8f376077..41cb56dc5 100644 --- a/ir/be/begnuas.c +++ b/ir/be/begnuas.c @@ -259,6 +259,8 @@ static void do_dump_atomic_init(be_gas_decl_env_t *env, obstack_t *obst, ir_label_t label; ir_entity *ent; + init = skip_Id(init); + switch (get_irn_opcode(init)) { case iro_Cast: @@ -362,7 +364,7 @@ static void dump_size_type(obstack_t *obst, size_t size) { break; case 2: - obstack_printf(obst, "\t.value\t"); + obstack_printf(obst, "\t.word\t"); break; case 4: @@ -418,6 +420,8 @@ static int initializer_is_string_const(const ir_initializer_t *initializer) return 0; len = initializer->compound.n_initializers; + if (len < 1) + return 0; for(i = 0; i < len; ++i) { int c; tarval *tv; @@ -436,9 +440,13 @@ static int initializer_is_string_const(const ir_initializer_t *initializer) return 0; c = get_tarval_long(tv); - if((i < len - 1 && !(isgraph(c) || isspace(c))) - || (i >= len - 1 && c != 0)) - return 0; + if (i < len - 1) { + if (!isgraph(c) && !isspace(c)) + return 0; + } else { + if (c != 0) + return 0; + } } return 1; @@ -807,6 +815,9 @@ static void dump_initializer(be_gas_decl_env_t *env, obstack_t *obst, type = get_entity_type(entity); size = get_initializer_size(initializer, type); + if (size == 0) + return; + /* * In the worst case, every initializer allocates one byte. * Moreover, initializer might be big, do not allocate on stack.