------- Comment #18 from ebotcazou at gcc dot gnu dot org 2010-01-16 15:11 ------- > strictly speaking, I would argue that Ada should not set COMMON flag for > !PUBLIC variables since it has no effect: all static variables that have no > initializer go to .common anyway.
That seems reasonable. The Ada part is OK if you write it: DECL_INITIAL (var_decl) = var_init; TREE_READONLY (var_decl) = const_flag; DECL_EXTERNAL (var_decl) = extern_flag; TREE_PUBLIC (var_decl) = public_flag || extern_flag; TREE_CONSTANT (var_decl) = constant_p; TREE_THIS_VOLATILE (var_decl) = TREE_SIDE_EFFECTS (var_decl) = TYPE_VOLATILE (type); /* Ada doesn't feature Fortran-like COMMON variables so we shouldn't try to fiddle with DECL_COMMON. However, on platforms that don't support global BSS sections, uninitialized global variables would go in DATA instead, thus increasing the size of the executable. */ if (!flag_no_common && TREE_CODE (var_decl) == VAR_DECL && TREE_PUBLIC (var_decl) && !have_global_bss_p ()) DECL_COMMON (var_decl) = 1; Thanks for fixing the problem. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42068