diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index c42b1f3c6cf0b85e3791f9de0ccec3aa24ea641e..304919fb19054167f11ef5148bf78c52a4deeb99 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 7c84a6d85f323ef3e84bd619540f9071123f6260..472c0daa6b9f6c79687ea639ffe44715199e154d 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 1c75aa09deea75f20c5afd23011e99e5a80948cb..1c732ce139835bc69ccdc636b30f2d8e1c24772f 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 3cab6bf6703106f396e986a87df2bcb1034f890b..c25b6738aa506a330bbc515e61bb7b7729e85039 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;