OSDN Git Service

libitm: Remove unused code.
[pf3gnuchains/gcc-fork.git] / gcc / ada / par-load.adb
index f924523..e30ffc0 100644 (file)
@@ -6,18 +6,17 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2007, 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- --
--- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
 -- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT;  see file COPYING.  If not, write --
--- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
--- Boston, MA 02110-1301, USA.                                              --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
 --                                                                          --
 -- GNAT was originally developed  by the GNAT team at  New York University. --
 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
@@ -32,6 +31,7 @@
 
 with Fname.UF; use Fname.UF;
 with Lib.Load; use Lib.Load;
+with Namet.Sp; use Namet.Sp;
 with Uname;    use Uname;
 with Osint;    use Osint;
 with Sinput.L; use Sinput.L;
@@ -205,7 +205,8 @@ begin
 
          begin
             Error_Msg_Unit_1 := Expect_Name;
-            Error_Msg ("$$ is not a predefined library unit!", Loc);
+            Error_Msg -- CODEFIX
+              ("$$ is not a predefined library unit!", Loc);
 
             --  In the predefined file case, we know the user did not
             --  construct their own package, but we got the wrong one.
@@ -226,11 +227,11 @@ begin
             --  unit name is indeed a plausible misspelling of the one we got.
 
             if Is_Bad_Spelling_Of
-              (Found  => Get_Name_String (Expect_Name),
-               Expect => Get_Name_String (Actual_Name))
+              (Name_Id (Expect_Name), Name_Id (Actual_Name))
             then
                Error_Msg_Unit_1 := Actual_Name;
-               Error_Msg ("possible misspelling of $$!", Loc);
+               Error_Msg -- CODEFIX
+                 ("possible misspelling of $$!", Loc);
             end if;
          end;
 
@@ -265,20 +266,27 @@ begin
            Required   => False,
            Subunit    => False,
            Error_Node => Curunit,
-           Corr_Body  => Cur_Unum);
+           Corr_Body  => Cur_Unum,
+           PMES       => (Cur_Unum = Main_Unit));
 
-      --  If we successfully load the unit, then set the spec pointer. Once
-      --  again note that if the loaded unit has a fatal error, Load will
+      --  If we successfully load the unit, then set the spec/body pointers.
+      --  Once again note that if the loaded unit has a fatal error, Load will
       --  have set our Fatal_Error flag to propagate this condition.
 
       if Unum /= No_Unit then
          Set_Library_Unit (Curunit, Cunit (Unum));
+         Set_Library_Unit (Cunit (Unum), Curunit);
 
          --  If this is a separate spec for the main unit, then we reset
          --  Main_Unit_Entity to point to the entity for this separate spec
+         --  and this is also where we generate the SCO's for this spec.
 
          if Cur_Unum = Main_Unit then
             Main_Unit_Entity := Cunit_Entity (Unum);
+
+            if Generate_SCO then
+               SCO_Record (Unum);
+            end if;
          end if;
 
       --  If we don't find the spec, then if we have a subprogram body, we
@@ -322,11 +330,10 @@ begin
       if Spec_Name /= No_Unit_Name then
          Unum :=
            Load_Unit
-             (Load_Name         => Spec_Name,
-              Required          => True,
-              Subunit           => False,
-              Error_Node        => Curunit,
-              From_Limited_With => From_Limited_With);
+             (Load_Name  => Spec_Name,
+              Required   => True,
+              Subunit    => False,
+              Error_Node => Curunit);
 
          if Unum /= No_Unit then
             Set_Parent_Spec (Unit (Curunit), Cunit (Unum));
@@ -341,7 +348,7 @@ begin
         Load_Unit
           (Load_Name  => Body_Name,
            Required   => True,
-           Subunit    => True,
+           Subunit    => False,
            Error_Node => Name (Unit (Curunit)));
 
       if Unum /= No_Unit then
@@ -389,14 +396,12 @@ begin
 
             Unum :=
               Load_Unit
-                (Load_Name         => Spec_Name,
-                 Required          => False,
-                 Subunit           => False,
-                 Error_Node        => With_Node,
-                 Renamings         => True,
-                 From_Limited_With => From_Limited_With
-                                        or else
-                                      Limited_Present (Context_Node));
+                (Load_Name  => Spec_Name,
+                 Required   => False,
+                 Subunit    => False,
+                 Error_Node => With_Node,
+                 Renamings  => True,
+                 With_Node  => Context_Node);
 
             --  If we find the unit, then set spec pointer in the N_With_Clause
             --  to point to the compilation unit for the spec. Remember that