re PR ada/63310 (Ada bootstrap error with -fcompare-debug)
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 29 Jun 2015 17:45:34 +0000 (17:45 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 29 Jun 2015 17:45:34 +0000 (17:45 +0000)
PR ada/63310
* gcc-interface/utils.c (gnat_write_global_declarations): Always
build the dummy global variable if code was generated.

From-SVN: r225139

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

index 97e293d..db79420 100644 (file)
@@ -1,3 +1,9 @@
+2015-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/63310
+       * gcc-interface/utils.c (gnat_write_global_declarations): Always
+       build the dummy global variable if code was generated.
+
 2015-06-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        PR fortran/66605
index ab5b9e0..a02dc67 100644 (file)
@@ -5202,8 +5202,9 @@ gnat_write_global_declarations (void)
   tree iter;
 
   /* If we have declared types as used at the global level, insert them in
-     the global hash table.  We use a dummy variable for this purpose.  */
-  if (types_used_by_cur_var_decl && !types_used_by_cur_var_decl->is_empty ())
+     the global hash table.  We use a dummy variable for this purpose, but
+     we need to build it unconditionally to avoid -fcompare-debug issues.  */
+  if (first_global_object_name)
     {
       struct varpool_node *node;
       char *label;
@@ -5218,11 +5219,12 @@ gnat_write_global_declarations (void)
       node->definition = 1;
       node->force_output = 1;
 
-      while (!types_used_by_cur_var_decl->is_empty ())
-       {
-         tree t = types_used_by_cur_var_decl->pop ();
-         types_used_by_var_decl_insert (t, dummy_global);
-       }
+      if (types_used_by_cur_var_decl)
+       while (!types_used_by_cur_var_decl->is_empty ())
+         {
+           tree t = types_used_by_cur_var_decl->pop ();
+           types_used_by_var_decl_insert (t, dummy_global);
+         }
     }
 
   /* Output debug information for all global type declarations first.  This