2009-04-22 Ed Schonberg <schonberg@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Apr 2009 15:14:51 +0000 (15:14 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Apr 2009 15:14:51 +0000 (15:14 +0000)
* sem_res.adb: Create block around procedure call when actual is a
concatenation.

2009-04-22  Thomas Quinot  <quinot@adacore.com>

* s-soflin.ads: Fix typos

2009-04-22  Vincent Celier  <celier@adacore.com>

* prj-env.adb: Minor comment change

* prj-nmsc.adb (Check_Common): Add guard to avoid calling
Get_Name_String with No_File.

* tempdir.adb (Create_Temp_File): Output diagnostic when temp file
cannot be created even when not in verbose mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146587 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/prj-env.adb
gcc/ada/prj-nmsc.adb
gcc/ada/s-soflin.ads
gcc/ada/sem_res.adb
gcc/ada/tempdir.adb

index 235cf53..8d822c7 100644 (file)
@@ -1,3 +1,22 @@
+2009-04-22  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_res.adb: Create block around procedure call when actual is a
+       concatenation.
+
+2009-04-22  Thomas Quinot  <quinot@adacore.com>
+
+       * s-soflin.ads: Fix typos
+
+2009-04-22  Vincent Celier  <celier@adacore.com>
+
+       * prj-env.adb: Minor comment change
+
+       * prj-nmsc.adb (Check_Common): Add guard to avoid calling
+       Get_Name_String with No_File.
+
+       * tempdir.adb (Create_Temp_File): Output diagnostic when temp file
+       cannot be created even when not in verbose mode.
+
 2009-04-22  Emmanuel Briot  <briot@adacore.com>
 
        * make.adb, prj-env.adb, prj-env.ads, prj-nmsc.adb, prj.adb,
index 3b0b1e5..a56ce93 100644 (file)
@@ -1246,9 +1246,10 @@ package body Prj.Env is
       GNAT.OS_Lib.Close (File, Status);
 
       if not Status then
-         Prj.Com.Fail ("disk full, could not create mapping file");
-         --  Do we know this is disk full? Or could it be e.g. a protection
-         --  problem of some kind preventing creation of the file ???
+         Prj.Com.Fail ("disk full, could not write mapping file");
+         --  We were able to create the temporary file, so there is no problem
+         --  of protection. However, we are not able to close it, so there must
+         --  be a capacity problem that we express using "disk full".
       end if;
    end Create_Mapping_File;
 
index daff8ef..46f14a8 100644 (file)
@@ -2909,8 +2909,10 @@ package body Prj.Nmsc is
             end;
          end if;
 
-         Write_Attr
-           ("Dot_Replacement", Get_Name_String (Dot_Replacement));
+         if Dot_Replacement /= No_File then
+            Write_Attr
+              ("Dot_Replacement", Get_Name_String (Dot_Replacement));
+         end if;
 
          Casing_Defined := False;
 
index 6c868cd..16b483b 100644 (file)
@@ -207,11 +207,11 @@ package System.Soft_Links is
    --    Locked_Processing : begin
    --       System.Soft_Links.Lock_Task.all;
    --       ...
-   --       System.Soft_Links..Unlock_Task.all;
+   --       System.Soft_Links.Unlock_Task.all;
    --
    --    exception
    --       when others =>
-   --          System.Soft_Links..Unlock_Task.all;
+   --          System.Soft_Links.Unlock_Task.all;
    --          raise;
    --    end Locked_Processing;
    --
index e166954..4a66456 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2008, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2009, 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- --
@@ -3170,6 +3170,18 @@ package body Sem_Res is
             then
                Establish_Transient_Scope (A, False);
 
+            --  A small optimization: if one of the actuals is a concatenation
+            --  create a block around a procedure call to recover stack space.
+            --  This alleviates stack usage when several procedure calls in
+            --  the same statement list use concatenation.
+
+            elsif Nkind (A) = N_Op_Concat
+              and then Nkind (N) = N_Procedure_Call_Statement
+              and then Expander_Active
+            then
+               Establish_Transient_Scope (A, False);
+               Resolve (A, Etype (F));
+
             else
                if Nkind (A) = N_Type_Conversion
                  and then Is_Array_Type (Etype (F))
index 1612140..b443307 100644 (file)
@@ -94,10 +94,7 @@ package body Tempdir is
       end if;
 
       if FD = Invalid_FD then
-         if Verbose_Mode then
-            Write_Line ("could not create temporary file in " & Directory);
-         end if;
-
+         Write_Line ("could not create temporary file in " & Directory);
          Name := No_Path;
 
       else