aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog11
-rw-r--r--gcc/ada/exp_cg.adb18
-rw-r--r--gcc/ada/s-pooglo.ads6
3 files changed, 31 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index c39e7c7..04c73a9 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,14 @@
+2010-09-10 Jose Ruiz <ruiz@adacore.com>
+
+ * exp_cg.adb (Is_Predefined_Dispatching_Operation): When trying the
+ pattern matching to detect predefined primitive operations take into
+ account that there can be an extra suffix related to body-nested
+ package entities.
+
+2010-09-10 Ed Schonberg <schonberg@adacore.com>
+
+ * s-pooglo.ads: Add overriding indicators.
+
2010-09-10 Vincent Celier <celier@adacore.com>
* vms_data.ads: Add new GNAT BIND qualifiers /32_MALLOC (for -H32) and
diff --git a/gcc/ada/exp_cg.adb b/gcc/ada/exp_cg.adb
index 14d1390..376f9ca 100644
--- a/gcc/ada/exp_cg.adb
+++ b/gcc/ada/exp_cg.adb
@@ -265,9 +265,25 @@ package body Exp_CG is
Name_uDisp_Requeue,
Name_uDisp_Timed_Select);
- Suffix_Length : constant Natural := Homonym_Suffix_Length (E);
+ Suffix_Length : Natural;
begin
+ -- Search for and strip suffix for body-nested package entities
+
+ Suffix_Length := Homonym_Suffix_Length (E);
+ for J in reverse Full_Name'First + 2 .. Full_Name'Last loop
+ if Full_Name (J) = 'X' then
+
+ -- Include the "X", "Xb", "Xn", ... in the part of the
+ -- suffix to be removed.
+
+ Suffix_Length := Suffix_Length + Full_Name'Last - J + 1;
+ exit;
+ end if;
+
+ exit when Full_Name (J) /= 'b' and then Full_Name (J) /= 'n';
+ end loop;
+
for J in Predef_Names_95'Range loop
Get_Name_String (Predef_Names_95 (J));
diff --git a/gcc/ada/s-pooglo.ads b/gcc/ada/s-pooglo.ads
index 3ab05f0..ae2e1af 100644
--- a/gcc/ada/s-pooglo.ads
+++ b/gcc/ada/s-pooglo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2010, 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- --
@@ -57,13 +57,13 @@ package System.Pool_Global is
(Pool : Unbounded_No_Reclaim_Pool)
return System.Storage_Elements.Storage_Count;
- procedure Allocate
+ overriding procedure Allocate
(Pool : in out Unbounded_No_Reclaim_Pool;
Address : out System.Address;
Storage_Size : System.Storage_Elements.Storage_Count;
Alignment : System.Storage_Elements.Storage_Count);
- procedure Deallocate
+ overriding procedure Deallocate
(Pool : in out Unbounded_No_Reclaim_Pool;
Address : System.Address;
Storage_Size : System.Storage_Elements.Storage_Count;