From: Matthias Braun Date: Wed, 10 Feb 2010 23:05:45 +0000 (+0000) Subject: support for local common symbols (whatever that is good for); introduce ir_visibility... X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=4f2e72b82ad87a0cd9e9d808f77557da7e0ce55f;p=cparser support for local common symbols (whatever that is good for); introduce ir_visibility_private (not tested yet as they don't occur in C) [r27109] --- diff --git a/ast2firm.c b/ast2firm.c index b3079cb..c47b8eb 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -4548,8 +4548,13 @@ static void create_global_variable(entity_t *entity) assert(entity->kind == ENTITY_VARIABLE); switch ((storage_class_tag_t)entity->declaration.storage_class) { - case STORAGE_CLASS_STATIC: visibility = ir_visibility_local; break; case STORAGE_CLASS_EXTERN: visibility = ir_visibility_external; break; + case STORAGE_CLASS_STATIC: + visibility = ir_visibility_local; + /* uninitialized globals get merged in C */ + if (entity->variable.initializer == NULL) + linkage |= IR_LINKAGE_MERGE; + break; case STORAGE_CLASS_NONE: visibility = ir_visibility_default; /* uninitialized globals get merged in C */