===================================================================
@@ -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