From e9f57686fcfaf04788a27d6433e7bf727d08001c Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 6 Jun 2011 10:21:58 +0000 Subject: trans.c (Identifier_to_gnu): Also handle deferred constants whose full view has discriminants specially. * gcc-interface/trans.c (Identifier_to_gnu): Also handle deferred constants whose full view has discriminants specially. From-SVN: r174689 --- gcc/ada/gcc-interface/trans.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gcc/ada/gcc-interface/trans.c') diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 5f08877..ca47e93 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -906,9 +906,11 @@ Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p) attribute Position, generated for dispatching code (see Make_DT in exp_disp,adb). In that case we need the type itself, not is parent, in particular if it is a derived type */ - if (Is_Private_Type (gnat_temp_type) - && Has_Unknown_Discriminants (gnat_temp_type) - && Ekind (gnat_temp) == E_Constant + if (Ekind (gnat_temp) == E_Constant + && Is_Private_Type (gnat_temp_type) + && (Has_Unknown_Discriminants (gnat_temp_type) + || (Present (Full_View (gnat_temp_type)) + && Has_Discriminants (Full_View (gnat_temp_type)))) && Present (Full_View (gnat_temp))) { gnat_temp = Full_View (gnat_temp); -- cgit v1.1