]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
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 235cf5386c6338b9f7bbb0d3dd73b0422e7fcbd9..8d822c71132a29eb714534d4583af28776b0ba6e 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 3b0b1e51e00735fb8bf2cfa58e918ed340358575..a56ce931fffe80dee3c46a2010ade220946cdd26 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 daff8ef30eeb128cd916db802f35986d7f243822..46f14a8b03686bf28ee2d4efb4f1db71842408b2 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 6c868cd6cedd6afee18b10b01ab8cc289e1b8a36..16b483b28b84ff1d6c06377f3d4a9a9d2bd055eb 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 e166954e3901726197833e366bba93bf2a95c0f2..4a664562a23d31f144646955cf9d6ff1274dbfe0 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 1612140b3eca4d47b307657876c03002d70bf26f..b44330750804900f771a7dea890c740ca9e38ed4 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