OSDN Git Service

2009-11-30 Arnaud Charlet <charlet@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Nov 2009 11:08:56 +0000 (11:08 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Nov 2009 11:08:56 +0000 (11:08 +0000)
* s-taprop-posix.adb: Fix casing.
* s-osinte-tru64.adb: Complete previous check-in.

2009-11-30  Robert Dewar  <dewar@adacore.com>

* gnat_rm.texi: Document pragma Compiler_Unit
* s-bitops.adb, s-restri.adb, g-htable.adb, s-restri.ads,
a-comlin.ads, a-strhas.ads, s-strhas.adb, s-parame.adb,
s-parame.ads, a-clrefi.adb, a-clrefi.ads, a-ioexce.ads: Supply missing
Compiler_Unit pragmas.
* freeze.adb (Freeze_Entity): Improve message for 8-bit boolean passed
to C.

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

17 files changed:
gcc/ada/ChangeLog
gcc/ada/a-clrefi.adb
gcc/ada/a-clrefi.ads
gcc/ada/a-comlin.ads
gcc/ada/a-ioexce.ads
gcc/ada/a-strhas.ads
gcc/ada/freeze.adb
gcc/ada/g-htable.adb
gcc/ada/gnat_rm.texi
gcc/ada/s-bitops.adb
gcc/ada/s-osinte-tru64.adb
gcc/ada/s-parame.adb
gcc/ada/s-parame.ads
gcc/ada/s-restri.adb
gcc/ada/s-restri.ads
gcc/ada/s-strhas.adb
gcc/ada/s-taprop-posix.adb

index 8fa1757..33f3219 100644 (file)
@@ -1,3 +1,18 @@
+2009-11-30  Arnaud Charlet  <charlet@adacore.com>
+
+       * s-taprop-posix.adb: Fix casing.
+       * s-osinte-tru64.adb: Complete previous check-in.
+
+2009-11-30  Robert Dewar  <dewar@adacore.com>
+
+       * gnat_rm.texi: Document pragma Compiler_Unit
+       * s-bitops.adb, s-restri.adb, g-htable.adb, s-restri.ads,
+       a-comlin.ads, a-strhas.ads, s-strhas.adb, s-parame.adb,
+       s-parame.ads, a-clrefi.adb, a-clrefi.ads, a-ioexce.ads: Supply missing
+       Compiler_Unit pragmas.
+       * freeze.adb (Freeze_Entity): Improve message for 8-bit boolean passed
+       to C.
+
 2009-11-30  Robert Dewar  <dewar@adacore.com>
 
        * makeutl.adb, makeutl.ads, prj-proc.adb, prj.adb, prj.ads: Minor
index 210e861..938ea18 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 2007-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- --
@@ -29,6 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+pragma Compiler_Unit;
+
 with Ada.Unchecked_Deallocation;
 
 with System.OS_Lib; use System.OS_Lib;
index 63b4588..fdefafc 100644 (file)
@@ -36,6 +36,8 @@
 --  Using a response file allow passing a set of arguments to an executable
 --  longer than the maximum allowed by the system on the command line.
 
+pragma Compiler_Unit;
+
 with System.Strings;
 
 package Ada.Command_Line.Response_File is
index a0335a4..8d66e15 100644 (file)
@@ -33,6 +33,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+pragma Compiler_Unit;
+
 package Ada.Command_Line is
    pragma Preelaborate;
 
index 43239dd..44865ab 100644 (file)
@@ -13,6 +13,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+pragma Compiler_Unit;
+
 package Ada.IO_Exceptions is
    pragma Pure;
 
index 7d33bf7..c2574d1 100644 (file)
@@ -13,6 +13,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+pragma Compiler_Unit;
+
 with Ada.Containers;
 
 function Ada.Strings.Hash (Key : String) return Containers.Hash_Type;
index 85206f7..9301071 100644 (file)
@@ -2535,6 +2535,8 @@ package body Freeze is
                        and then not Has_Warnings_Off (F_Type)
                        and then not Has_Warnings_Off (Formal)
                      then
+                        --  Qualify mention of formals with subprogram name
+
                         Error_Msg_Qual_Level := 1;
 
                         --  Check suspicious use of fat C pointer
@@ -2543,8 +2545,8 @@ package body Freeze is
                           and then Esize (F_Type) > Ttypes.System_Address_Size
                         then
                            Error_Msg_N
-                             ("?type of & does not correspond "
-                              & "to C pointer!", Formal);
+                             ("?type of & does not correspond to C pointer!",
+                              Formal);
 
                         --  Check suspicious return of boolean
 
@@ -2554,8 +2556,10 @@ package body Freeze is
                           and then not Has_Size_Clause (F_Type)
                         then
                            Error_Msg_N
-                             ("?& is an 8-bit Ada Boolean, "
-                              & "use char in C!", Formal);
+                             ("& is an 8-bit Ada Boolean?", Formal);
+                           Error_Msg_N
+                             ("\use appropriate corresponding type in C "
+                              & "(e.g. char)?", Formal);
 
                         --  Check suspicious tagged type
 
@@ -2584,6 +2588,8 @@ package body Freeze is
                               Formal, F_Type);
                         end if;
 
+                        --  Turn off name qualification after message output
+
                         Error_Msg_Qual_Level := 0;
                      end if;
 
@@ -2680,9 +2686,17 @@ package body Freeze is
                           and then not Has_Warnings_Off (R_Type)
                           and then not Has_Size_Clause (R_Type)
                         then
-                           Error_Msg_N
-                             ("?return type of & is an 8-bit "
-                              & "Ada Boolean, use char in C!", E);
+                           declare
+                              N : constant Node_Id :=
+                                    Result_Definition (Declaration_Node (E));
+                           begin
+                              Error_Msg_NE
+                                ("return type of & is an 8-bit Ada Boolean?",
+                                 N, E);
+                              Error_Msg_NE
+                                ("\use appropriate corresponding type in C "
+                                 & "(e.g. char)?", N, E);
+                           end;
 
                         --  Check suspicious return tagged type
 
index 7cb2660..aa6c6b7 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---                     Copyright (C) 1995-2005, AdaCore                     --
+--                     Copyright (C) 1995-2009, AdaCore                     --
 --                                                                          --
 -- 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- --
@@ -34,7 +34,9 @@
 --  This is a dummy body, required because if we remove the body we have
 --  bootstrap path problems (this unit used to have a body, and if we do not
 --  supply a dummy body, the old incorrect body is picked up during the
---  bootstrap process.
+--  bootstrap process).
+
+pragma Compiler_Unit;
 
 package body GNAT.HTable is
 end GNAT.HTable;
index 4b906fe..0a197c0 100644 (file)
@@ -112,6 +112,7 @@ Implementation Defined Pragmas
 * Pragma Common_Object::
 * Pragma Compile_Time_Error::
 * Pragma Compile_Time_Warning::
+* Pragma Compiler_Unit::
 * Pragma Complete_Representation::
 * Pragma Complex_Representation::
 * Pragma Component_Alignment::
@@ -722,6 +723,7 @@ consideration, the use of these pragmas should be minimized.
 * Pragma Common_Object::
 * Pragma Compile_Time_Error::
 * Pragma Compile_Time_Warning::
+* Pragma Compiler_Unit::
 * Pragma Complete_Representation::
 * Pragma Complex_Representation::
 * Pragma Component_Alignment::
@@ -1333,6 +1335,24 @@ of formal parameters are tested, and warnings given appropriately. Another use
 with a first parameter of True is to warn a client about use of a package,
 for example that it is not fully implemented.
 
+@node Pragma Compiler_Unit
+@unnumberedsec Pragma Compiler_Unit
+@findex Compiler_Unit
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Compiler_Unit;
+@end smallexample
+
+@noindent
+This pragma is intended only for internal use in the GNAT run-time library.
+It indicates that the unit is used as part of the compiler build. The effect
+is to disallow constructs (raise with message, conditional expressions etc)
+that would cause trouble when bootstrapping using an older version of GNAT.
+For the exact list of restrictions, see the compiler sources and references
+to Is_Compiler_Unit.
+
 @node Pragma Complete_Representation
 @unnumberedsec Pragma Complete_Representation
 @findex Complete_Representation
index a49ffed..c49b829 100644 (file)
@@ -29,6 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+pragma Compiler_Unit;
+
 with System;                 use System;
 with System.Unsigned_Types;  use System.Unsigned_Types;
 
index 6229ba0..ad391bc 100644 (file)
@@ -102,7 +102,7 @@ package body System.OS_Interface is
          Res :=
            mprotect
              (Teb.all.stack_yellow, Get_Page_Size,
-              prot => (if Res then PROT_ON else PROT_OFF));
+              prot => (if Hide then PROT_ON else PROT_OFF));
       end if;
    end Hide_Unhide_Yellow_Zone;
 
index 63eae6e..ff61b7e 100644 (file)
@@ -31,6 +31,8 @@
 
 --  This is the default (used on all native platforms) version of this package
 
+pragma Compiler_Unit;
+
 package body System.Parameters is
 
    -------------------------
index 5119513..2110034 100644 (file)
@@ -46,6 +46,8 @@
 --  Note: do not introduce any pragma Inline statements into this unit, since
 --  otherwise the relinking and rebinding capability would be deactivated.
 
+pragma Compiler_Unit;
+
 package System.Parameters is
    pragma Pure;
 
index 2db0e79..7ce6da9 100644 (file)
@@ -29,6 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+pragma Compiler_Unit;
+
 package body System.Restrictions is
    use Rident;
 
index e9a72aa..cd447c1 100644 (file)
@@ -38,6 +38,8 @@
 --  with names discarded, so that we do not have image tables for the
 --  large restriction enumeration types at run time.
 
+pragma Compiler_Unit;
+
 with System.Rident;
 
 package System.Restrictions is
index b838230..0e86cb6 100644 (file)
@@ -29,6 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+pragma Compiler_Unit;
+
 package body System.String_Hash is
 
    --  Compute a hash value for a key. The approach here is follows the
index 84c0eee..d05bb1c 100644 (file)
@@ -246,7 +246,7 @@ package body System.Task_Primitives.Operations is
 
          Res :=
            mprotect (Guard_Page_Address, Get_Page_Size,
-                     prot => (if ON then PROT_ON else PROT_OFF));
+                     prot => (if On then PROT_ON else PROT_OFF));
          pragma Assert (Res = 0);
       end if;
    end Stack_Guard;