From ab291babb48cd807ff8b14a4e9b582b1a997568f Mon Sep 17 00:00:00 2001 From: charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 17 Feb 2006 16:09:11 +0000 Subject: [PATCH] 2006-02-17 Ramon Fernandez <fernandez@adacore.com> Thomas Quinot <quinot@adacore.com> Robert Dewar <dewar@adacore.com> Javier Miranda <miranda@adacore.com> * expander.adb: Fix typo in comment * exp_pakd.adb: Fix typo Minor comment reformatting. * g-dyntab.adb: Minor reformatting * exp_ch6.adb (Register_Interface_DT_Entry): Traverse the list of aliased subprograms to look for the abstract interface subprogram. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111199 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/exp_ch6.adb | 14 +++++++++++++- gcc/ada/exp_pakd.adb | 8 ++++---- gcc/ada/expander.adb | 4 ++-- gcc/ada/g-dyntab.adb | 1 - 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index c42b1f3c6cf0..304919fb1905 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -4404,6 +4404,7 @@ package body Exp_Ch6 is (Prim : Entity_Id; Ancestor_Iface_Prim : Entity_Id := Empty) is + E : Entity_Id; Prim_Typ : Entity_Id; Prim_Op : Entity_Id; Iface_Typ : Entity_Id; @@ -4422,7 +4423,18 @@ package body Exp_Ch6 is if No (Ancestor_Iface_Prim) then Prim_Typ := Scope (DTC_Entity (Alias (Prim))); - Iface_Typ := Scope (DTC_Entity (Abstract_Interface_Alias (Prim))); + + -- Look for the abstract interface subprogram + + E := Abstract_Interface_Alias (Prim); + while Present (E) + and then Is_Abstract (E) + and then not Is_Interface (Scope (DTC_Entity (E))) + loop + E := Alias (E); + end loop; + + Iface_Typ := Scope (DTC_Entity (E)); -- Generate the code of the thunk only when this primitive -- operation is associated with a secondary dispatch table. diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb index 7c84a6d85f32..472c0daa6b9f 100644 --- a/gcc/ada/exp_pakd.adb +++ b/gcc/ada/exp_pakd.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2006, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -682,9 +682,9 @@ package body Exp_Pakd is Act_ST := Underlying_Type (Etype (Aexp)); Create_Packed_Array_Type (Act_ST); - -- Just replace the eEype with the packed array type. This works - -- because the expression will not be further analyzed, and Gigi - -- considers the two types equivalent in any case. + -- Just replace the etype with the packed array type. This works because + -- the expression will not be further analyzed, and Gigi considers the + -- two types equivalent in any case. -- This is not strictly the case ??? If the reference is an actual in -- call, the expansion of the prefix is delayed, and must be reanalyzed, diff --git a/gcc/ada/expander.adb b/gcc/ada/expander.adb index 1c75aa09deea..1c732ce13983 100644 --- a/gcc/ada/expander.adb +++ b/gcc/ada/expander.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2006, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -75,7 +75,7 @@ package body Expander is procedure Expand (N : Node_Id) is begin -- If we were analyzing a default expression the Full_Analysis flag - -- must have be off. If we are in expansion mode then we must be + -- must be off. If we are in expansion mode then we must be -- performing a full analysis. If we are analyzing a generic then -- Expansion must be off. diff --git a/gcc/ada/g-dyntab.adb b/gcc/ada/g-dyntab.adb index 3cab6bf67031..c25b6738aa50 100644 --- a/gcc/ada/g-dyntab.adb +++ b/gcc/ada/g-dyntab.adb @@ -286,7 +286,6 @@ package body GNAT.Dynamic_Tables is function Index_Of (Idx : Natural) return Table_Index_Type is J : constant Integer'Base := Table_Index_Type'Pos (First) + Idx - 1; - begin return Table_Index_Type'Val (J); end Index_Of; -- GitLab