From: Ed Schonberg Date: Tue, 8 Apr 2008 06:57:48 +0000 (+0200) Subject: binde.adb (Gather_All_Links, [...]): units that are mentioned in limited_with_clauses... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7dbc8918c6557300367851abe89be81b7c2a04b4;p=gcc.git binde.adb (Gather_All_Links, [...]): units that are mentioned in limited_with_clauses to do create semantic... 2008-04-08 Ed Schonberg * binde.adb (Gather_All_Links, Gather_Dependencies): units that are mentioned in limited_with_clauses to do create semantic dependencies even though they appear in the ali file. From-SVN: r134064 --- diff --git a/gcc/ada/binde.adb b/gcc/ada/binde.adb index a98cdd5021e..fc1ebeb128c 100644 --- a/gcc/ada/binde.adb +++ b/gcc/ada/binde.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2007, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2008, 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- -- @@ -867,10 +867,12 @@ package body Binde is -- Skip if this with is an interface to a stand-alone library. -- Skip also if no ALI file for this WITH, happens for language -- defined generics while bootstrapping the compiler (see body of - -- Lib.Writ.Write_With_Lines). + -- Lib.Writ.Write_With_Lines). Finally, skip if it is a limited + -- with clause, which does not impose an elaboration link. if not Withs.Table (W).SAL_Interface and then Withs.Table (W).Afile /= No_File + and then not Withs.Table (W).Limited_With then declare Info : constant Int := @@ -1237,8 +1239,8 @@ package body Binde is Make_Elab_Entry (Withs.Table (W).Uname, No_Elab_All_Link)); - -- Elaborate_All_Desirable case, for this we establish - -- the same links as above, but with a different reason. + -- Elaborate_All_Desirable case, for this we establish the + -- same links as above, but with a different reason. elsif Withs.Table (W).Elab_All_Desirable then @@ -1256,15 +1258,15 @@ package body Binde is Make_Elab_Entry (Withs.Table (W).Uname, No_Elab_All_Link)); - -- Pragma Elaborate case. We must build a link for the - -- withed unit itself, and also the corresponding body - -- if there is one. + -- Pragma Elaborate case. We must build a link for the + -- withed unit itself, and also the corresponding body if + -- there is one. - -- However, skip this processing if there is no ALI file - -- for the WITH entry, because this means it is a - -- generic (even when we fix the generics so that an ALI - -- file is present, we probably still will have no ALI - -- file for unchecked and other special cases). + -- However, skip this processing if there is no ALI file for + -- the WITH entry, because this means it is a generic (even + -- when we fix the generics so that an ALI file is present, + -- we probably still will have no ALI file for unchecked and + -- other special cases). elsif Withs.Table (W).Elaborate and then Withs.Table (W).Afile /= No_File @@ -1276,8 +1278,8 @@ package body Binde is (Corresponding_Body (Withed_Unit), U, Elab); end if; - -- Elaborate_Desirable case, for this we establish - -- the same links as above, but with a different reason. + -- Elaborate_Desirable case, for this we establish + -- the same links as above, but with a different reason. elsif Withs.Table (W).Elab_Desirable then Build_Link (Withed_Unit, U, Withed); @@ -1288,8 +1290,14 @@ package body Binde is U, Elab_Desirable); end if; - -- Case of normal WITH with no elaboration pragmas, just - -- build the single link to the directly referenced unit + -- A limited_with does not establish an elaboration + -- dependence (that's the whole point!). + + elsif Withs.Table (W).Limited_With then + null; + + -- Case of normal WITH with no elaboration pragmas, just + -- build the single link to the directly referenced unit else Build_Link (Withed_Unit, U, Withed);