trans.c (gnat_to_gnu): If the type is tagged, mark it as used for debugging purposes.

* gcc-interface/trans.c (gnat_to_gnu) <N_Qualified_Expression>: If the
	type is tagged, mark it as used for debugging purposes.
	<N_Allocator>: Likewise for a qualified expression.

From-SVN: r184258
This commit is contained in:
Eric Botcazou 2012-02-15 08:39:04 +00:00 committed by Eric Botcazou
parent 4a582c9fda
commit 0029bafd89
2 changed files with 21 additions and 7 deletions

View File

@ -1,8 +1,14 @@
2012-02-15 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (gnat_to_gnu) <N_Qualified_Expression>: If the
type is tagged, mark it as used for debugging purposes.
<N_Allocator>: Likewise for a qualified expression.
2012-02-15 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (call_to_gnu): Create the temporary for the
return value in the by-reference return type case if this isn't the
expression of an object declaration.  Tidy up.
expression of an object declaration. Tidy up.
2012-02-09 Tristan Gingold <gingold@adacore.com>

View File

@ -5518,6 +5518,13 @@ gnat_to_gnu (Node_Id gnat_node)
gnu_result = gnat_to_gnu (Expression (gnat_node));
gnu_result_type = get_unpadded_type (Etype (gnat_node));
/* If this is a qualified expression for a tagged type, we mark the type
as used. Because of polymorphism, this might be the only reference to
the tagged type in the program while objects have it as dynamic type.
The debugger needs to see it to display these objects properly. */
if (kind == N_Qualified_Expression && Is_Tagged_Type (Etype (gnat_node)))
used_types_insert (gnu_result_type);
gnu_result
= convert_with_check (Etype (gnat_node), gnu_result,
Do_Overflow_Check (gnat_node),
@ -5865,18 +5872,19 @@ gnat_to_gnu (Node_Id gnat_node)
if (Is_Elementary_Type (gnat_desig_type)
|| Is_Constrained (gnat_desig_type))
{
gnu_type = gnat_to_gnu_type (gnat_desig_type);
gnu_init = convert (gnu_type, gnu_init);
}
gnu_type = gnat_to_gnu_type (gnat_desig_type);
else
{
gnu_type = gnat_to_gnu_type (Etype (Expression (gnat_temp)));
if (TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE)
gnu_type = TREE_TYPE (gnu_init);
gnu_init = convert (gnu_type, gnu_init);
}
/* See the N_Qualified_Expression case for the rationale. */
if (Is_Tagged_Type (gnat_desig_type))
used_types_insert (gnu_type);
gnu_init = convert (gnu_type, gnu_init);
}
else
gcc_unreachable ();