OSDN Git Service

2006-02-17 Ramon Fernandez <fernandez@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Feb 2006 16:09:11 +0000 (16:09 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Feb 2006 16:09:11 +0000 (16:09 +0000)
    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
gcc/ada/exp_pakd.adb
gcc/ada/expander.adb
gcc/ada/g-dyntab.adb

index c42b1f3..304919f 100644 (file)
@@ -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.
index 7c84a6d..472c0da 100644 (file)
@@ -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,
index 1c75aa0..1c732ce 100644 (file)
@@ -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.
 
index 3cab6bf..c25b673 100644 (file)
@@ -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;