aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/lib-load.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2007-08-14 10:50:51 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2007-08-14 10:50:51 +0200
commit33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d (patch)
treebc637fac407ff7e642e0541a6da74fc5d842ee43 /gcc/ada/lib-load.adb
parent6d64bc378c6d5f95f5f76ea3e42e8c009f4b9b4d (diff)
downloadgcc-33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d.zip
gcc-33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d.tar.gz
gcc-33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d.tar.bz2
[multiple changes]
2007-08-14 Geert Bosch <bosch@adacore.com> * i-forbla.ads, i-forbla.adb, a-ngcoar.adb, a-ngcoar.ads, i-forlap.ads, s-gearop.adb, s-gecobl.adb, s-gecobl.ads, s-gerela.adb, s-gerela.ads: Add required linker pragmas for automatically linking with the gnalasup linear algebra support library, and the systems math library. Rename cdot to cdotu and zdot to zdotu. Update header comment to describe purpose of package. 2007-08-14 Thomas Quinot <quinot@adacore.com> * exp_ch7.adb (Find_Final_List): For an anonymous access type that has an explicitly specified Associated_Final_Chain, use that list. (Expand_N_Package_Body): Build dispatch tables of library level tagged types. (Expand_N_Package_Declaration): Build dispatch tables of library level tagged types. Minor code cleanup. 2007-08-14 Vincent Celier <celier@adacore.com> * gnatchop.adb (Terminate_Program): Remove exception and use Types.Terminate_Program instead. * osint.ads, osint.adb (Current_Exit_Status): New global variable (Find_Program_Name): Added protection against empty name. (OS_Exit_Through_Exception): New procedure * s-os_lib.ads, s-os_lib.adb (OS_Exit): New procedure body (OS_Exit_Default): New procedure that contains the previous implementation of procedure OS_Exit. (Final_Value): Remove obsolete Interix stuff. 2007-08-14 Thomas Quinot <quinot@adacore.com> * g-socket.ads: Reorganize example code so that it also works on Windows XP. 2007-08-14 Tristan Gingold <gingold@adacore.com> * g-trasym.ads: AIX now supports symbolic backtraces. 2007-08-14 Ed Schonberg <schonberg@adacore.com> * lib-load.adb (From_Limited_With_Chain): Always scan the stack of units being loaded to detect circularities. A circularity may be present even if the current chain of pending units to load starts from a limited_with_clause. * lib-load.ads: Change profile of Load_Unit to use a with_clause rather than a boolean flag, in order to detect circularities in with_clauses. * par-load.adb: Use current with_clause in calls to Load_Unit, rather than propagating the From_Limited_With flag, in order to handle properly circularities involving with_clauses. 2007-08-14 Nicolas Setton <setton@adacore.com> * link.c (FreeBSD): Add "const" keyword where needed, to eliminate warnings. 2007-08-14 Arnaud Charlet <charlet@adacore.com> * Makefile.in: GNATRTL_LINEARALGEBRA_OBJS: New variable holding objects to build for libgnala. libgnat: Add rules to build libgnala.a (LIBGNAT_TARGET_PAIRS for VxWorks): Remove s-osinte-vxworks.adb from target pairs of the VxWorks 6 kernel runtime, use it only for VxWorks 5. Add s-osinte-vxworks-kernel.adb to the target pairs of the kernel run-time lib for VxWorks 6, which would provide a different implementation for Task_Cont and Task_Stop than the VxWorks 5 version. x86-solaris section (EH_MECHANISM): Set to -gcc, as this port is now running ZCX by default. Add g-sttsne-locking to LynxOS version. Remove g-sttsne-vxworks.ads; use g-sttsne-locking.ads instead. On x86/darwin, use a-numaux-x86.ad? and system-darwin-x86.ads. * system-darwin-x86.ads: New file. * Make-lang.in: Delete files before copying onto them, so if they are read-only, the copy won't fail. Update dependencies 2007-08-14 Pascal Obry <obry@adacore.com> * mdll-fil.adb, * mdll.adb: Implement a more consistent libraries naming scheme. 2007-08-14 Vincent Celier <celier@adacore.com> * mlib-utl.adb (Gcc_Name): Change from constant String to String_Access (Gcc): Initialize Gcc_Name at the first call 2007-08-14 Ed Schonberg <schonberg@adacore.com> * sem_ch7.adb (Analyze_Package_Specification): Do not install private with_clauses of the enclosing unit when analyzing the package specification of a nested instance. 2007-08-14 Hristian Kirtchev <kirtchev@adacore.com> * sinfo.ads, sinfo.adb (Is_Coextension, Set_Is_Coextension): Removed. (Is_Dynamic_Coextension, Set_Is_Dynamic_Coextension): New routines. Remove flag Is_Coextension. Add flag Is_Dynamic_Coextension. Update the layout of N_Allocator. 2007-08-14 Thomas Quinot <quinot@adacore.com> * rtsfind.adb (Check_RPC): Add PCS version check. * gnatvsn.ads, gnatvsn.adb: Add PCS version. (Gnat_Free_Software): New function. * sem_dist.ads, sem_dist.adb (Get_PCS_Version): New subprogram. Returns the PCS_Version value from s-parint, used to check that it is consistent with what exp_dist expects. * s-parint.ads (PCS_Version): New entity for checking consistency between exp_dist and PCS. * gen-soccon.c: (SO_REUSEPORT): New constant. 2007-08-14 Hristian Kirtchev <kirtchev@adacore.com> * a-calfor.adb (Image (Duration; Boolean)): Change type of local variable Sub_Second to Duration in order to accomodate a larger range of arithmetic operations. 2007-08-14 Bob Duff <duff@adacore.com> * g-sttsne-locking.ads: Move comments from spec to body. * g-sttsne-locking.adb: Move comments from spec to body. * g-sttsne-vxworks.ads: Removed. * g-sttsne-vxworks.adb: Removed. From-SVN: r127467
Diffstat (limited to 'gcc/ada/lib-load.adb')
-rw-r--r--gcc/ada/lib-load.adb39
1 files changed, 20 insertions, 19 deletions
diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb
index a4fb208..98f9a52 100644
--- a/gcc/ada/lib-load.adb
+++ b/gcc/ada/lib-load.adb
@@ -52,7 +52,7 @@ package body Lib.Load is
-- Local Subprograms --
-----------------------
- function From_Limited_With_Chain (Lim : Boolean) return Boolean;
+ function From_Limited_With_Chain return Boolean;
-- Check whether a possible circular dependence includes units that
-- have been loaded through limited_with clauses, in which case there
-- is no real circularity.
@@ -236,22 +236,24 @@ package body Lib.Load is
-- From_Limited_With_Chain --
-----------------------------
- function From_Limited_With_Chain (Lim : Boolean) return Boolean is
+ function From_Limited_With_Chain return Boolean is
+ Curr_Num : constant Unit_Number_Type :=
+ Load_Stack.Table (Load_Stack.Last).Unit_Number;
+
begin
-- True if the current load operation is through a limited_with clause
+ -- and we are not within a loop of regular with_clauses.
- if Lim then
- return True;
-
- -- Examine the Load_Stack to locate any previous Limited_with clause
+ for U in reverse Load_Stack.First .. Load_Stack.Last - 1 loop
+ if Load_Stack.Table (U).Unit_Number = Curr_Num then
+ return False;
- elsif Load_Stack.Last - 1 > Load_Stack.First then
- for U in Load_Stack.First .. Load_Stack.Last - 1 loop
- if Load_Stack.Table (U).From_Limited_With then
- return True;
- end if;
- end loop;
- end if;
+ elsif Present (Load_Stack.Table (U).With_Node)
+ and then Limited_Present (Load_Stack.Table (U).With_Node)
+ then
+ return True;
+ end if;
+ end loop;
return False;
end From_Limited_With_Chain;
@@ -285,7 +287,7 @@ package body Lib.Load is
begin
Load_Stack.Increment_Last;
- Load_Stack.Table (Load_Stack.Last) := (Main_Unit, False);
+ Load_Stack.Table (Load_Stack.Last) := (Main_Unit, Empty);
-- Initialize unit table entry for Main_Unit. Note that we don't know
-- the unit name yet, that gets filled in when the parser parses the
@@ -339,7 +341,7 @@ package body Lib.Load is
Subunit : Boolean;
Corr_Body : Unit_Number_Type := No_Unit;
Renamings : Boolean := False;
- From_Limited_With : Boolean := False) return Unit_Number_Type
+ With_Node : Node_Id := Empty) return Unit_Number_Type
is
Calling_Unit : Unit_Number_Type;
Uname_Actual : Unit_Name_Type;
@@ -558,7 +560,7 @@ package body Lib.Load is
-- and indicate the kind of with_clause responsible for the load.
Load_Stack.Increment_Last;
- Load_Stack.Table (Load_Stack.Last) := (Unum, From_Limited_With);
+ Load_Stack.Table (Load_Stack.Last) := (Unum, With_Node);
-- Case of entry already in table
@@ -579,7 +581,7 @@ package body Lib.Load is
or else Acts_As_Spec (Units.Table (Unum).Cunit))
and then (Nkind (Error_Node) /= N_With_Clause
or else not Limited_Present (Error_Node))
- and then not From_Limited_With_Chain (From_Limited_With)
+ and then not From_Limited_With_Chain
then
if Debug_Flag_L then
Write_Str (" circular dependency encountered");
@@ -653,8 +655,7 @@ package body Lib.Load is
Multiple_Unit_Index := Get_Unit_Index (Uname_Actual);
Units.Table (Unum).Munit_Index := Multiple_Unit_Index;
Initialize_Scanner (Unum, Source_Index (Unum));
- Discard_List (Par (Configuration_Pragmas => False,
- From_Limited_With => From_Limited_With));
+ Discard_List (Par (Configuration_Pragmas => False));
Multiple_Unit_Index := Save_Index;
Set_Loading (Unum, False);
end;