]> gcc.gnu.org Git - gcc.git/commitdiff
re PR ada/42068 (ICE in function_and_variable_visibility)
authorJan Hubicka <jh@suse.cz>
Mon, 18 Jan 2010 15:42:05 +0000 (16:42 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 18 Jan 2010 15:42:05 +0000 (15:42 +0000)
PR middle-end/42068
(create_var_decl_1): Do not set COMMON flag for unit local variables.

From-SVN: r156010

gcc/ada/ChangeLog
gcc/ada/gcc-interface/utils.c

index c80c02911dd52cae3f2972d0fa7b82253054ffda..aa01613abe4f013d917505a962680917428ce11b 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-18  Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/42068
+       (create_var_decl_1): Do not set COMMON flag for unit local variables.
+
 2010-01-17  Laurent GUERBY  <laurent@guerby.net>
 
        * gcc-interface/Makefile.in: Fix typo in arm*-*-linux-gnueabi.
index 38795a0cea60bd13e64f61ddeab7dfd85cc07d7d..51756544183e640824aa60735c1c0615ffff8842 100644 (file)
@@ -1387,6 +1387,13 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init,
      that is, not violating a No_Elaboration_Code restriction.  */
   if (global_bindings_p () && var_init != 0 && ! init_const)
     Check_Elaboration_Code_Allowed (gnat_node);
+  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
@@ -1394,15 +1401,9 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init,
      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;
-  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);
 
   /* If it's public and not external, always allocate storage for it.
      At the global binding level we need to allocate static storage for the
This page took 0.069776 seconds and 5 git commands to generate.