[Ada] Set Current_Error_Node directly
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 26 Sep 2018 09:16:54 +0000 (09:16 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 26 Sep 2018 09:16:54 +0000 (09:16 +0000)
This changes gigi to set Current_Error_Node directly, which should
result in a more robust error handling.

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* gcc-interface/gigi.h (error_gnat_node): Delete.
* gcc-interface/trans.c (error_gnat_node): Likewise.
(gigi): Replace it with Current_Error_Node.
(gnat_to_gnu): Likewise.
* gcc-interface/utils.c (rest_of_subprog_body_compilation):
Likewise.
* gcc-interface/misc.c (internal_error_function): Do not set it.

From-SVN: r264607

gcc/ada/ChangeLog
gcc/ada/gcc-interface/gigi.h
gcc/ada/gcc-interface/misc.c
gcc/ada/gcc-interface/trans.c
gcc/ada/gcc-interface/utils.c

index b296122fa45de1df2c262ed79aef567ae2394627..d6d46eed0b07167f289aaf8032e5d6d4a9b7619c 100644 (file)
@@ -1,3 +1,13 @@
+2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/gigi.h (error_gnat_node): Delete.
+       * gcc-interface/trans.c (error_gnat_node): Likewise.
+       (gigi): Replace it with Current_Error_Node.
+       (gnat_to_gnu): Likewise.
+       * gcc-interface/utils.c (rest_of_subprog_body_compilation):
+       Likewise.
+       * gcc-interface/misc.c (internal_error_function): Do not set it.
+
 2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Adjust
index eb64a8bbdbde07586905c372bc4ee02d1c74c3aa..3029732603a4c1ddb8178207f836fa24d5f73a58 100644 (file)
@@ -214,9 +214,6 @@ extern void destroy_gnat_decl (void);
 /* Highest number in the front-end node table.  */
 extern int max_gnat_nodes;
 
-/* Current node being treated, in case abort called.  */
-extern Node_Id error_gnat_node;
-
 /* True when gigi is being called on an analyzed but unexpanded
    tree, and the only purpose of the call is to properly annotate
    types with representation information.  */
index 9ee73b9ec1bb94d3ab30b596479a03e4660fbf1a..16a9d2ccf8e0a3745499721bdbe46bbbe1077aa3 100644 (file)
@@ -347,7 +347,6 @@ internal_error_function (diagnostic_context *context, const char *msgid,
   sp_loc.Bounds = &temp_loc;
   sp_loc.Array = loc;
 
-  Current_Error_Node = error_gnat_node;
   Compiler_Abort (sp, sp_loc, true);
 }
 
index 3e129b60ce1327484f8d1882e0f98d93eecc858d..12f6a87437fb0036ef878f4b6e48d939daa200cb 100644 (file)
@@ -86,9 +86,6 @@ struct List_Header *List_Headers_Ptr;
 /* Highest number in the front-end node table.  */
 int max_gnat_nodes;
 
-/* Current node being treated, in case abort called.  */
-Node_Id error_gnat_node;
-
 /* True when gigi is being called on an analyzed but unexpanded
    tree, and the only purpose of the call is to properly annotate
    types with representation information.  */
@@ -719,7 +716,7 @@ gigi (Node_Id gnat_root,
   destroy_gnat_utils ();
 
   /* We cannot track the location of errors past this point.  */
-  error_gnat_node = Empty;
+  Current_Error_Node = Empty;
 }
 \f
 /* Return a subprogram decl corresponding to __gnat_rcheck_xx for the given
@@ -5910,7 +5907,7 @@ gnat_to_gnu (Node_Id gnat_node)
   bool sync = false;
 
   /* Save node number for error message and set location information.  */
-  error_gnat_node = gnat_node;
+  Current_Error_Node = gnat_node;
   Sloc_to_locus (Sloc (gnat_node), &input_location);
 
   /* If we are only annotating types and this node is a statement, return
index 313d984b83dda82b62a9426049b5db3f853e1189..73ab562bbb1fe333ed6a2dcdf19efa375cc9cfdc 100644 (file)
@@ -3389,7 +3389,7 @@ void
 rest_of_subprog_body_compilation (tree subprog_decl)
 {
   /* We cannot track the location of errors past this point.  */
-  error_gnat_node = Empty;
+  Current_Error_Node = Empty;
 
   /* If we're only annotating types, don't actually compile this function.  */
   if (type_annotate_only)