mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
4a582c9fda
commit
0029bafd89
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ();
|
||||
|
|
|
|||
Loading…
Reference in New Issue