* gcc-interface/utils.c (create_var_decl): Set again DECL_COMMON and
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Feb 2016 09:40:46 +0000 (09:40 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Feb 2016 09:40:46 +0000 (09:40 +0000)
DECL_IGNORED_P last.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233210 138bc75d-0d04-0410-961f-82ee72b054a4

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

index c79fafa..43ae0a9 100644 (file)
@@ -1,3 +1,8 @@
+2016-02-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/utils.c (create_var_decl): Set again DECL_COMMON and
+       DECL_IGNORED_P last.
+
 2016-01-28  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/gigi.h (enum attr_type): Rename into...
index 0ce571a..a62d9c2 100644 (file)
@@ -2484,6 +2484,24 @@ create_var_decl (tree name, tree asm_name, tree type, tree init,
   DECL_ARTIFICIAL (var_decl) = artificial_p;
   DECL_EXTERNAL (var_decl) = extern_flag;
 
+  TREE_CONSTANT (var_decl) = constant_p;
+  TREE_READONLY (var_decl) = const_flag;
+
+  /* The object is public if it is external or if it is declared public
+     and has static storage duration.  */
+  TREE_PUBLIC (var_decl) = extern_flag || (public_flag && static_storage);
+
+  /* We need to allocate static storage for an object with static storage
+     duration if it isn't external.  */
+  TREE_STATIC (var_decl) = !extern_flag && static_storage;
+
+  TREE_SIDE_EFFECTS (var_decl)
+    = TREE_THIS_VOLATILE (var_decl)
+    = TYPE_VOLATILE (type) | volatile_flag;
+
+  if (TREE_SIDE_EFFECTS (var_decl))
+    TREE_ADDRESSABLE (var_decl) = 1;
+
   /* 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
@@ -2508,24 +2526,6 @@ create_var_decl (tree name, tree asm_name, tree type, tree init,
             != null_pointer_node))
     DECL_IGNORED_P (var_decl) = 1;
 
-  TREE_CONSTANT (var_decl) = constant_p;
-  TREE_READONLY (var_decl) = const_flag;
-
-  /* The object is public if it is external or if it is declared public
-     and has static storage duration.  */
-  TREE_PUBLIC (var_decl) = extern_flag || (public_flag && static_storage);
-
-  /* We need to allocate static storage for an object with static storage
-     duration if it isn't external.  */
-  TREE_STATIC (var_decl) = !extern_flag && static_storage;
-
-  TREE_SIDE_EFFECTS (var_decl)
-    = TREE_THIS_VOLATILE (var_decl)
-    = TYPE_VOLATILE (type) | volatile_flag;
-
-  if (TREE_SIDE_EFFECTS (var_decl))
-    TREE_ADDRESSABLE (var_decl) = 1;
-
   /* ??? Some attributes cannot be applied to CONST_DECLs.  */
   if (TREE_CODE (var_decl) == VAR_DECL)
     process_attributes (&var_decl, &attr_list, true, gnat_node);