From: Javier Miranda Date: Wed, 19 Dec 2007 16:23:21 +0000 (+0100) Subject: exp_ch3.adb (Expand_N_Object_Declaration): Complete the circuitry that forces the... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5be0911d7d9b51b04b2ef5cf9c925211c3733694;p=gcc.git exp_ch3.adb (Expand_N_Object_Declaration): Complete the circuitry that forces the construction of static dispatch tables... 2007-12-19 Javier Miranda * exp_ch3.adb (Expand_N_Object_Declaration): Complete the circuitry that forces the construction of static dispatch tables in case of record subtypes. From-SVN: r131073 --- diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index eae2c2fd503..fcc216e21c5 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -4051,6 +4051,7 @@ package body Exp_Ch3 is Expr : constant Node_Id := Expression (N); Loc : constant Source_Ptr := Sloc (N); Typ : constant Entity_Id := Etype (Def_Id); + Base_Typ : constant Entity_Id := Base_Type (Typ); Expr_Q : Node_Id; Id_Ref : Node_Id; New_Ref : Node_Id; @@ -4075,20 +4076,20 @@ package body Exp_Ch3 is if VM_Target = No_VM and then Static_Dispatch_Tables and then Is_Library_Level_Entity (Def_Id) - and then Is_Library_Level_Tagged_Type (Typ) - and then (Ekind (Typ) = E_Record_Type - or else Ekind (Typ) = E_Protected_Type - or else Ekind (Typ) = E_Task_Type) - and then not Has_Dispatch_Table (Typ) + and then Is_Library_Level_Tagged_Type (Base_Typ) + and then (Ekind (Base_Typ) = E_Record_Type + or else Ekind (Base_Typ) = E_Protected_Type + or else Ekind (Base_Typ) = E_Task_Type) + and then not Has_Dispatch_Table (Base_Typ) then declare New_Nodes : List_Id := No_List; begin - if Is_Concurrent_Type (Typ) then - New_Nodes := Make_DT (Corresponding_Record_Type (Typ), N); + if Is_Concurrent_Type (Base_Typ) then + New_Nodes := Make_DT (Corresponding_Record_Type (Base_Typ), N); else - New_Nodes := Make_DT (Typ, N); + New_Nodes := Make_DT (Base_Typ, N); end if; if not Is_Empty_List (New_Nodes) then