From: Eric Botcazou Date: Wed, 26 Sep 2018 09:16:54 +0000 (+0000) Subject: [Ada] Set Current_Error_Node directly X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=738b83cd32bc4ebf651ef517cd880f04500d07af;p=gcc.git [Ada] Set Current_Error_Node directly This changes gigi to set Current_Error_Node directly, which should result in a more robust error handling. 2018-09-26 Eric Botcazou 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 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b296122fa45..d6d46eed0b0 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2018-09-26 Eric Botcazou + + * 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 * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h index eb64a8bbdbd..3029732603a 100644 --- a/gcc/ada/gcc-interface/gigi.h +++ b/gcc/ada/gcc-interface/gigi.h @@ -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. */ diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c index 9ee73b9ec1b..16a9d2ccf8e 100644 --- a/gcc/ada/gcc-interface/misc.c +++ b/gcc/ada/gcc-interface/misc.c @@ -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); } diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 3e129b60ce1..12f6a87437f 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -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; } /* 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 diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index 313d984b83d..73ab562bbb1 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -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)