From 5be0911d7d9b51b04b2ef5cf9c925211c3733694 Mon Sep 17 00:00:00 2001 From: Javier Miranda Date: Wed, 19 Dec 2007 17:23:21 +0100 Subject: [PATCH] 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 --- gcc/ada/exp_ch3.adb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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 -- 2.30.2