summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-17 16:09:11 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-17 16:09:11 +0000
commitab291babb48cd807ff8b14a4e9b582b1a997568f (patch)
tree595ec323529782b06dead213612ac6f6707b874d
parenta2d3b39c41ebc8912f3df4942d3b1b456d0b46fa (diff)
downloadppe42-gcc-ab291babb48cd807ff8b14a4e9b582b1a997568f.tar.gz
ppe42-gcc-ab291babb48cd807ff8b14a4e9b582b1a997568f.zip
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
-rw-r--r--gcc/ada/exp_ch6.adb14
-rw-r--r--gcc/ada/exp_pakd.adb8
-rw-r--r--gcc/ada/expander.adb4
-rw-r--r--gcc/ada/g-dyntab.adb1
4 files changed, 19 insertions, 8 deletions
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index c42b1f3c6cf..304919fb190 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 7c84a6d85f3..472c0daa6b9 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 1c75aa09dee..1c732ce1398 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 3cab6bf6703..c25b6738aa5 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;
OpenPOWER on IntegriCloud