From 5e017b1e25655f256a130419b427811bb1016b43 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Fri, 30 Aug 2019 15:15:40 +0000 Subject: 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 --- gcc/ada/gcc-interface/trans.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'gcc/ada/gcc-interface') diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 5579986..e7064c6 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 -- cgit v1.1