From: Michael Beck Date: Thu, 6 Mar 2008 14:01:03 +0000 (+0000) Subject: allow empty initializers X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=fc7758e649c391f5a06c45da813c9ed2d16141a8;p=libfirm allow empty initializers [r17973] --- diff --git a/ir/be/begnuas.c b/ir/be/begnuas.c index b0bf5640f..b8486796f 100644 --- a/ir/be/begnuas.c +++ b/ir/be/begnuas.c @@ -420,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; @@ -438,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; @@ -809,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.