------- 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

Reply via email to