]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 30 Jul 2012 15:17:50 +0000 (17:17 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 30 Jul 2012 15:17:50 +0000 (17:17 +0200)
2012-07-30  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch12.adb (Earlier): Add local variables T1 and T2. Minor code
refactoring.

2012-07-30  Thomas Quinot  <quinot@adacore.com>

* gnatcmd.adb, make.adb, makeutl.adb, makeutl.ads
(Test_If_Relative_Path): Rename to Ensure_Absolute_Path to better
reflect what this subprogram does. Rename argument Including_L_Switch
to For_Gnatbind, and also exempt -A from rewriting.
* bindusg.adb: Document optional =file argument to gnatbind -A.

2012-07-30  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb (Freeze_Entity): Do no apply restriction check on
storage pools to access to subprogram types.

From-SVN: r189978

gcc/ada/ChangeLog
gcc/ada/bindusg.adb
gcc/ada/freeze.adb
gcc/ada/gnatcmd.adb
gcc/ada/make.adb
gcc/ada/makeutl.adb
gcc/ada/makeutl.ads
gcc/ada/sem_ch12.adb

index 19dbf07fa6bc0d27df4436a41282b032db6c5edb..aa72155f1e4ecc800841cb48ee01e14e91d711aa 100644 (file)
@@ -1,3 +1,21 @@
+2012-07-30  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_ch12.adb (Earlier): Add local variables T1 and T2. Minor code
+       refactoring.
+
+2012-07-30  Thomas Quinot  <quinot@adacore.com>
+
+       * gnatcmd.adb, make.adb, makeutl.adb, makeutl.ads
+       (Test_If_Relative_Path): Rename to Ensure_Absolute_Path to better
+       reflect what this subprogram does. Rename argument Including_L_Switch
+       to For_Gnatbind, and also exempt -A from rewriting.
+       * bindusg.adb: Document optional =file argument to gnatbind -A.
+
+2012-07-30  Ed Schonberg  <schonberg@adacore.com>
+
+       * freeze.adb (Freeze_Entity): Do no apply restriction check on
+       storage pools to access to subprogram types.
+
 2012-07-30  Robert Dewar  <dewar@adacore.com>
 
        * par_sco.adb, a-cihama.adb, a-coinve.adb, exp_ch7.adb, a-ciorse.adb,
index 23840d3048c2c5c1cc451d5cb8b172179d91579c..6b1751bcadc3657e63327c0b1bc5b3a04d0862dd 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                B o d y                                   --
 --                                                                          --
---          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2012, 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- --
@@ -78,7 +78,7 @@ package body Bindusg is
 
       --  Line for -A switch
 
-      Write_Line ("  -A        Give list of ALI files in partition");
+      Write_Line ("  -A[=file] Give list of ALI files in partition");
 
       --  Line for -b switch
 
index f2f7ac918c803feaacafa903de0fd752b83a6de5..bd677d997f790c8a1cac7c6743e42561e40b6cc1 100644 (file)
@@ -4201,12 +4201,16 @@ package body Freeze is
                Check_Suspicious_Modulus (E);
             end if;
 
-         elsif Is_Access_Type (E) then
+         elsif Is_Access_Type (E)
+           and then not Is_Access_Subprogram_Type (E)
+         then
 
             --  If a pragma Default_Storage_Pool applies, and this type has no
             --  Storage_Pool or Storage_Size clause (which must have occurred
             --  before the freezing point), then use the default. This applies
             --  only to base types.
+            --  None of this applies to access to subprogramss, for which there
+            --  are clearly no pools.
 
             if Present (Default_Pool)
               and then Is_Base_Type (E)
index 87983997a7a5471566eaf39055883d7a227f190e..bf3bfcf28729cdb7b156d197f1650abdfdf89af7 100644 (file)
@@ -273,7 +273,7 @@ procedure GNATCmd is
    --  Add the -L and -l switches to the linker for all of the library
    --  projects.
 
-   procedure Test_If_Relative_Path
+   procedure Ensure_Absolute_Path
      (Switch : in out String_Access;
       Parent : String);
    --  Test if Switch is a relative search path switch. If it is and it
@@ -1303,20 +1303,20 @@ procedure GNATCmd is
    end Set_Library_For;
 
    ---------------------------
-   -- Test_If_Relative_Path --
+   -- Ensure_Absolute_Path --
    ---------------------------
 
-   procedure Test_If_Relative_Path
+   procedure Ensure_Absolute_Path
      (Switch : in out String_Access;
       Parent : String)
    is
    begin
-      Makeutl.Test_If_Relative_Path
+      Makeutl.Ensure_Absolute_Path
         (Switch, Parent,
          Do_Fail              => Osint.Fail'Access,
          Including_Non_Switch => False,
          Including_RTS        => True);
-   end Test_If_Relative_Path;
+   end Ensure_Absolute_Path;
 
    -------------------
    -- Non_VMS_Usage --
@@ -2387,7 +2387,7 @@ begin
             --  arguments.
 
             for J in 1 .. Last_Switches.Last loop
-               GNATCmd.Test_If_Relative_Path
+               GNATCmd.Ensure_Absolute_Path
                  (Last_Switches.Table (J), Current_Work_Dir);
             end loop;
 
@@ -2397,7 +2397,7 @@ begin
                Project_Dir : constant String := Name_Buffer (1 .. Name_Len);
             begin
                for J in 1 .. First_Switches.Last loop
-                  GNATCmd.Test_If_Relative_Path
+                  GNATCmd.Ensure_Absolute_Path
                     (First_Switches.Table (J), Project_Dir);
                end loop;
             end;
index 0eed65d90fd24aa4d61ad2e91c43960ad825b0ba..d45ee140b115158b67305fa172100cf4e82aafa5 100644 (file)
@@ -2366,7 +2366,7 @@ package body Make is
                                  Last_New := Last_New + 1;
                                  New_Args (Last_New) :=
                                    new String'(Name_Buffer (1 .. Name_Len));
-                                 Test_If_Relative_Path
+                                 Ensure_Absolute_Path
                                    (New_Args (Last_New),
                                     Do_Fail              => Make_Failed'Access,
                                     Parent               => Dir_Path,
@@ -2399,7 +2399,7 @@ package body Make is
                                         Directory.Display_Name);
 
                      begin
-                        Test_If_Relative_Path
+                        Ensure_Absolute_Path
                           (New_Args (1),
                            Do_Fail              => Make_Failed'Access,
                            Parent               => Dir_Path,
@@ -5028,36 +5028,36 @@ package body Make is
                       Get_Name_String (Main_Project.Directory.Display_Name);
       begin
          for J in 1 .. Binder_Switches.Last loop
-            Test_If_Relative_Path
+            Ensure_Absolute_Path
               (Binder_Switches.Table (J),
                Do_Fail => Make_Failed'Access,
-               Parent => Dir_Path, Including_L_Switch => False);
+               Parent => Dir_Path, For_Gnatbind => True);
          end loop;
 
          for J in 1 .. Saved_Binder_Switches.Last loop
-            Test_If_Relative_Path
+            Ensure_Absolute_Path
               (Saved_Binder_Switches.Table (J),
-               Do_Fail            => Make_Failed'Access,
-               Parent             => Current_Work_Dir,
-               Including_L_Switch => False);
+               Do_Fail             => Make_Failed'Access,
+               Parent              => Current_Work_Dir,
+               For_Gnatbind        => True);
          end loop;
 
          for J in 1 .. Linker_Switches.Last loop
-            Test_If_Relative_Path
+            Ensure_Absolute_Path
               (Linker_Switches.Table (J),
                Parent  => Dir_Path,
                Do_Fail => Make_Failed'Access);
          end loop;
 
          for J in 1 .. Saved_Linker_Switches.Last loop
-            Test_If_Relative_Path
+            Ensure_Absolute_Path
               (Saved_Linker_Switches.Table (J),
                Do_Fail => Make_Failed'Access,
                Parent  => Current_Work_Dir);
          end loop;
 
          for J in 1 .. Gcc_Switches.Last loop
-            Test_If_Relative_Path
+            Ensure_Absolute_Path
               (Gcc_Switches.Table (J),
                Do_Fail              => Make_Failed'Access,
                Parent               => Dir_Path,
@@ -5065,7 +5065,7 @@ package body Make is
          end loop;
 
          for J in 1 .. Saved_Gcc_Switches.Last loop
-            Test_If_Relative_Path
+            Ensure_Absolute_Path
               (Saved_Gcc_Switches.Table (J),
                Parent               => Current_Work_Dir,
                Do_Fail              => Make_Failed'Access,
@@ -5387,14 +5387,14 @@ package body Make is
                  Get_Name_String (Main_Project.Directory.Display_Name);
             begin
                for J in Last_Binder_Switch + 1 .. Binder_Switches.Last loop
-                  Test_If_Relative_Path
+                  Ensure_Absolute_Path
                     (Binder_Switches.Table (J),
                      Do_Fail => Make_Failed'Access,
-                     Parent  => Dir_Path, Including_L_Switch => False);
+                     Parent  => Dir_Path, For_Gnatbind => True);
                end loop;
 
                for J in Last_Linker_Switch + 1 .. Linker_Switches.Last loop
-                  Test_If_Relative_Path
+                  Ensure_Absolute_Path
                     (Linker_Switches.Table (J),
                      Parent  => Dir_Path,
                      Do_Fail => Make_Failed'Access);
index bc3a0ee1409e7e5095f225efb4023197fe2c9c5c..253e8db814cad56161397bad71c2c92d89ce7b88 100644 (file)
@@ -1316,11 +1316,12 @@ package body Makeutl is
                   --  Object files and -L switches specified with relative
                   --  paths must be converted to absolute paths.
 
-                  Test_If_Relative_Path
-                    (Switch  => Linker_Options_Buffer (Last_Linker_Option),
-                     Parent  => Dir_Path,
-                     Do_Fail => Do_Fail,
-                     Including_L_Switch => True);
+                  Ensure_Absolute_Path
+                    (Switch       =>
+                       Linker_Options_Buffer (Last_Linker_Option),
+                     Parent       => Dir_Path,
+                     Do_Fail      => Do_Fail,
+                     For_Gnatbind => False);
                end if;
 
                Options := In_Tree.Shared.String_Elements.Table (Options).Next;
@@ -1936,14 +1937,14 @@ package body Makeutl is
    end Path_Or_File_Name;
 
    ---------------------------
-   -- Test_If_Relative_Path --
+   -- Ensure_Absolute_Path --
    ---------------------------
 
-   procedure Test_If_Relative_Path
+   procedure Ensure_Absolute_Path
      (Switch               : in out String_Access;
       Parent               : String;
       Do_Fail              : Fail_Proc;
-      Including_L_Switch   : Boolean := True;
+      For_Gnatbind         : Boolean := False;
       Including_Non_Switch : Boolean := True;
       Including_RTS        : Boolean := False)
    is
@@ -1958,9 +1959,10 @@ package body Makeutl is
 
             if Sw (1) = '-' then
                if Sw'Length >= 3
-                 and then (Sw (2) = 'A'
-                            or else Sw (2) = 'I'
-                            or else (Including_L_Switch and then Sw (2) = 'L'))
+                 and then (Sw (2) = 'I'
+                            or else (not For_Gnatbind
+                                       and then (Sw (2) = 'L'
+                                         or else Sw (2) = 'A')))
                then
                   Start := 3;
 
@@ -1973,7 +1975,9 @@ package body Makeutl is
                              or else
                            Sw (2 .. 3) = "aO"
                              or else
-                           Sw (2 .. 3) = "aI")
+                           Sw (2 .. 3) = "aI"
+                             or else
+                           (For_Gnatbind and then Sw (2 .. 3) = "A="))
                then
                   Start := 4;
 
@@ -2033,7 +2037,7 @@ package body Makeutl is
             end if;
          end;
       end if;
-   end Test_If_Relative_Path;
+   end Ensure_Absolute_Path;
 
    -------------------
    -- Unit_Index_Of --
index 3ddb2085dd8293c7e66aa17b620725cf24e68921..693fafcd2661ddd9236b396dc4304a23efbe589d 100644 (file)
@@ -235,20 +235,19 @@ package Makeutl is
    --  Find the index of a unit in a source file. Return zero if the file is
    --  not a multi-unit source file.
 
-   procedure Test_If_Relative_Path
+   procedure Ensure_Absolute_Path
      (Switch               : in out String_Access;
       Parent               : String;
       Do_Fail              : Fail_Proc;
-      Including_L_Switch   : Boolean := True;
+      For_Gnatbind         : Boolean := False;
       Including_Non_Switch : Boolean := True;
       Including_RTS        : Boolean := False);
-   --  Test if Switch is a relative search path switch. If so, fail if Parent
-   --  is the empty string, otherwise prepend the path with Parent. This
-   --  subprogram is only used when using project files. For gnatbind switches,
-   --  Including_L_Switch is False, because the argument of the -L switch is
-   --  not a path. If Including_RTS is True, process also switches --RTS=.
-   --  Do_Fail is called in case of error. Using Osint.Fail might be
-   --  appropriate.
+   --  Do nothing if Switch is an absolute path switch. If relative, fail if
+   --  Parent is the empty string, otherwise prepend the path with Parent. This
+   --  subprogram is only used when using project files. If For_Gnatbind is
+   --  True, gnatbind switches that are not paths (-L, -A) are left unchaned.
+   --  If Including_RTS is True, process also switches --RTS=. Do_Fail is
+   --  called in case of error. Using Osint.Fail might be appropriate.
 
    function Path_Or_File_Name (Path : Path_Name_Type) return String;
    --  Returns a file name if -df is used, otherwise return a path name
index 0f2d254013c19fb7d2dc495f2fc5ba5db346449e..60edce32f2dac51af5121b3bff74634e007d8f86 100644 (file)
@@ -7068,6 +7068,8 @@ package body Sem_Ch12 is
       D2 : Integer := 0;
       P1 : Node_Id := N1;
       P2 : Node_Id := N2;
+      T1 : Source_Ptr;
+      T2 : Source_Ptr;
 
    --  Start of processing for Earlier
 
@@ -7208,19 +7210,21 @@ package body Sem_Ch12 is
       --  At this point either both nodes came from source or we approximated
       --  their source locations through neighbouring source statements.
 
+      T1 := Top_Level_Location (Sloc (P1));
+      T2 := Top_Level_Location (Sloc (P2));
+
       --  When two nodes come from the same instance, they have identical top
       --  level locations. To determine proper relation within the tree, check
       --  their locations within the template.
 
-      if Top_Level_Location (Sloc (P1)) = Top_Level_Location (Sloc (P2)) then
+      if T1 = T2 then
          return Sloc (P1) < Sloc (P2);
 
       --  The two nodes either come from unrelated instances or do not come
       --  from instantiated code at all.
 
       else
-         return Top_Level_Location (Sloc (P1))
-              < Top_Level_Location (Sloc (P2));
+         return T1 < T2;
       end if;
    end Earlier;