From: Eric Botcazou Date: Fri, 30 Aug 2019 15:15:40 +0000 (+0000) Subject: trans.c (gnat_to_gnu): Do not set the location on an expression used for a tag. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5e017b1e25655f256a130419b427811bb1016b43;p=gcc.git trans.c (gnat_to_gnu): Do not set the location on an expression used for a tag. * gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an expression used for a tag. From-SVN: r275197 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 636eb7c9dcd..f4c510d9fff 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2019-08-30 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an + expression used for a tag. + 2019-08-30 Eric Botcazou * gcc-interface/gigi.h (aggregate_type_contains_array_p): Declare. diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 5579986c0c3..e7064c6e72e 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -8727,10 +8727,16 @@ gnat_to_gnu (Node_Id gnat_node) set_gnu_expr_location_from_node (gnu_result, gnat_node); } - /* Set the location information on the result if it's not a simple name. + /* Set the location information on the result if it's not a simple name + or something that contains a simple name, for example a tag, because + we don"t want all the references to get the location of the first use. Note that we may have no result if we tried to build a CALL_EXPR node to a procedure with no side-effects and optimization is enabled. */ - else if (kind != N_Identifier && gnu_result && EXPR_P (gnu_result)) + else if (kind != N_Identifier + && !(kind == N_Selected_Component + && Chars (Selector_Name (gnat_node)) == Name_uTag) + && gnu_result + && EXPR_P (gnu_result)) set_gnu_expr_location_from_node (gnu_result, gnat_node); /* If we're supposed to return something of void_type, it means we have