]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gnat_rm.texi: First set of documentation additions for predefined RM units.
authorRobert Dewar <dewar@adacore.com>
Tue, 25 Feb 2014 15:27:16 +0000 (15:27 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 25 Feb 2014 15:27:16 +0000 (16:27 +0100)
2014-02-25  Robert Dewar  <dewar@adacore.com>

* gnat_rm.texi: First set of documentation additions for
predefined RM units.
* checks.adb: Minor reformatting.
* sem_elab.adb (Check_Task_Activation): Minor fix to error
message.
* sem_util.adb: Minor reformatting.

From-SVN: r208141

gcc/ada/ChangeLog
gcc/ada/checks.adb
gcc/ada/gnat_rm.texi
gcc/ada/sem_elab.adb
gcc/ada/sem_util.adb

index 55d96b791850ec33237fa29455cf9644ddcb4bbc..a7d5dd335c018acfe16430bb506eddb3e2330ad1 100644 (file)
@@ -1,3 +1,12 @@
+2014-02-25  Robert Dewar  <dewar@adacore.com>
+
+       * gnat_rm.texi: First set of documentation additions for
+       predefined RM units.
+       * checks.adb: Minor reformatting.
+       * sem_elab.adb (Check_Task_Activation): Minor fix to error
+       message.
+       * sem_util.adb: Minor reformatting.
+
 2014-02-25  Arnaud Charlet  <charlet@adacore.com>
 
        * usage.adb (Usage): Add help on -gnateC.
index 75be5b270679989937ab59180f22c5d2d75ee1ec..7d3979dcbb20b1238e234e53f756c5c10f36e9ef 100644 (file)
@@ -1516,8 +1516,8 @@ package body Checks is
 
       if Nkind (Original_Node (N)) /= N_Allocator
         and then (No (Lhs)
-          or else not Is_Entity_Name (Lhs)
-          or else No (Param_Entity (Lhs)))
+                   or else not Is_Entity_Name (Lhs)
+                   or else No (Param_Entity (Lhs)))
       then
          if (Etype (N) = Typ
               or else (Do_Access and then Designated_Type (Typ) = S_Typ))
@@ -1767,7 +1767,6 @@ package body Checks is
          if Do_Overflow_Check (N)
            and then not Overflow_Checks_Suppressed (Etype (N))
          then
-
             --  Test for extremely annoying case of xxx'First divided by -1
             --  for division of signed integer types (only overflow case).
 
index 84da3ec87482f325412dddd8601de7219a8c1b39..f88cacfadf164d1a0be180c342c5a147a1791106 100644 (file)
@@ -13751,6 +13751,7 @@ source file location.
 * Pragma Pack for Arrays::
 * Pragma Pack for Records::
 * Record Representation Clauses::
+* Handling of Records with Holes::
 * Enumeration Clauses::
 * Address Clauses::
 * Effect of Convention on Representation::
@@ -15092,6 +15093,83 @@ For non-primitive types, including packed arrays with a size greater than
 type, in particular, always starting on a byte boundary, and the length
 must be a multiple of the storage unit.
 
+@node Handling of Records with Holes
+@section Handling of Records with Holes
+@cindex Handling of Records with Holes
+
+As a result of alignment considerations, records may contain "holes"
+or gaps
+which do not correspond to the data bits of any of the components.
+Record representation clauses can also result in holes in records.
+
+GNAT does not attempt to clear these holes, so in record objects,
+they should be considered to hold undefined rubbish. The generated
+equality routine just tests components so does not access these
+undefined bits, and assignment and copy operations may or may not
+preserve the contents of these holes (for assignments, the holes
+in the target will in practice contain either the bits that are
+present in the holes in the source, or the bits that were present
+in the target before the assignment).
+
+If it is necessary to ensure that holes in records have all zero
+bits, then record objects for which this initialization is desired
+should be explicitly set to all zero values using Unchecked_Conversion
+or address overlays. For example
+
+@smallexample @c ada
+type HRec is record
+   C : Character;
+   I : Integer;
+end record;
+@end smallexample
+
+@noindent
+On typical machines, integers need to be aligned on a four-byte
+boundary, resulting in three bytes of undefined rubbish following
+the 8-bit field for C. To ensure that the hole in a variable of
+type HRec is set to all zero bits,
+you could for example do:
+
+@smallexample @c ada
+type Base is record
+   Dummy1, Dummy2 : Integer := 0;
+end record;
+
+BaseVar : Base;
+RealVar : Hrec;
+for RealVar'Address use BaseVar'Address;
+@end smallexample
+
+@noindent
+Now the 8-bytes of the value of RealVar start out containing all zero
+bits. A safer approach is to just define dummy fields, avoiding the
+holes, as in:
+
+@smallexample @c ada
+type HRec is record
+   C      : Character;
+   Dummy1 : Short_Short_Integer := 0;
+   Dummy2 : Short_Short_Integer := 0;
+   Dummy3 : Short_Short_Integer := 0;
+   I      : Integer;
+end record;
+@end smallexample
+
+@noindent
+And to make absolutely sure that the intent of this is followed, you
+can use representation clauses:
+
+@smallexample @c ada
+for Hrec use record
+   C      at 0 range 0 .. 7;
+   Dummy1 at 1 range 0 .. 7;
+   Dummy2 at 2 range 0 .. 7;
+   Dummy3 at 3 range 0 .. 7;
+   I      at 4 range 0 .. 31;
+end record;
+for Hrec'Size use 64;
+@end smallexample
+
 @node Enumeration Clauses
 @section Enumeration Clauses
 
@@ -15619,7 +15697,11 @@ together with a brief description of the functionality that is provided.
 
 For completeness, references are included to other predefined library
 routines defined in other sections of the Ada Reference Manual (these are
-cross-indexed from Annex A).
+cross-indexed from Annex A). For further details see the relevant
+package declarations in the run-time library. In particular, a few units
+are not implemented, as marked by the presence of pragma Unimplemented_Unit,
+and in this case the package declaration contains comments explaining why
+the unit is not implemented.
 
 @table @code
 @item Ada (A.2)
@@ -15627,13 +15709,35 @@ This is a parent package for all the standard library packages.  It is
 usually included implicitly in your program, and itself contains no
 useful data or routines.
 
+@item Ada.Assertions (11.4.2)
+@code{Assertions} provides the @code{Assert} subprograms, and also
+the declaration of the @code{Assertion_Error} exception.
+
+@item Ada.Asynchronous_Task_Control (D.11)
+@code{Asynchronous_Task_Control} provides low level facilities for task
+synchronization. It is typically not implemented. See package spec for details.
+
 @item Ada.Calendar (9.6)
 @code{Calendar} provides time of day access, and routines for
 manipulating times and durations.
 
+@item Ada.Calendar.Arithmetic (9.6.1)
+This package provides additional arithmetic
+operations for @code{Calendar}.
+
+@item Ada.Calendar.Formatting (9.6.1)
+This package provides formatting operations for @code{Calendar}.
+
+@item Ada.Calendar.Time_Zones (9.6.1)
+This package provides additional @code{Calendar} facilities
+for handling time zones.
+
 @item Ada.Characters (A.3.1)
 This is a dummy parent package that contains no useful entities
 
+@item Ada.Characters.Conversions (A.3.2)
+This package provides character conversion functions.
+
 @item Ada.Characters.Handling (A.3.2)
 This package provides some basic character handling capabilities,
 including classification functions for classes of characters (e.g.@: test
@@ -15654,6 +15758,71 @@ of the current program (analogous to the use of @code{argc} and @code{argv}
 in C), and also allows the exit status for the program to be set in a
 system-independent manner.
 
+@item Ada.Complex_Text_IO (G.1.3)
+This package provides text input and output of complex numbers.
+
+@item Ada.Containers (A.18.1)
+A top level package providing a few basic definitions used by all the
+following specific child packages that provide specific kinds of
+containers.
+
+@item Ada.Containers.Bounded_Priority_Queues (A.18.31)
+
+@item Ada.Containers.Bounded_Synchronized_Queues (A.18.29)
+
+@item Ada.Containers.Doubly_Linked_Lists (A.18.3)
+
+@item Ada.Containers.Generic_Array_Sort (A.18.26)
+
+@item Ada.Containers.Generic_Constrained_Array_Sort (A.18.26)
+
+@item Ada.Containers.Generic_Sort (A.18.26)
+
+@item Ada.Containers.Hashed_Maps (A.18.5)
+
+@item Ada.Containers.Hashed_Sets (A.18.8)
+
+@item Ada.Containers.Indefinite_Doubly_Linked_Lists (A.18.12)
+
+@item Ada.Containers.Indefinite_Hashed_Maps (A.18.13)
+
+@item Ada.Containers.Indefinite_Hashed_Sets (A.18.15)
+
+@item Ada.Containers.Indefinite_Holders (A.18.18)
+
+@item Ada.Containers.Indefinite_Multiway_Trees (A.18.17)
+
+@item Ada.Containers.Indefinite_Ordered_Maps (A.18.14)
+
+@item Ada.Containers.Indefinite_Ordered_Sets (A.18.16)
+
+@item Ada.Containers.Indefinite_Vectors (A.18.11)
+
+@item Ada.Containers.Multiway_Trees (A.18.10)
+
+@item Ada.Containers.Ordered_Maps (A.18.6)
+
+@item Ada.Containers.Ordered_Sets (A.18.9)
+
+@item Ada.Containers.Synchronized_Queue_Interfaces (A.18.27)
+
+@item Ada.Containers.Unbounded_Priority_Queues (A.18.30)
+
+@item Ada.Containers.Unbounded_Synchronized_Queues (A.18.28)
+
+@item Ada.Containers.Vectors (A.18.2)
+
+@item Ada.Directories (A.16)
+This package provides operations on directories.
+
+@item Ada.Directories.Hierarchical_File_Names (A.16.1)
+This package provides additional directory operations handling
+hiearchical file names.
+
+@item Ada.Directories.Information (A.16)
+This is an implementation defined package for additional directory
+operations, which is not implemented in GNAT.
+
 @item Ada.Decimal (F.2)
 This package provides constants describing the range of decimal numbers
 implemented, and also a decimal divide routine (analogous to the COBOL
@@ -15664,19 +15833,61 @@ This package provides input-output using a model of a set of records of
 fixed-length, containing an arbitrary definite Ada type, indexed by an
 integer record number.
 
+@item Ada.Dispatching (D.2.1)
+A parent package containing definitions for task dispatching operations.
+
+@item Ada.Dispatching.EDF (D.2.6)
+Not implemented in GNAT.
+
+@item Ada.Dispatching.Non_Preemptive (D.2.4)
+Not implemented in GNAT.
+
+@item Ada.Dispatching.Round_Robin (D.2.5)
+Not implemented in GNAT.
+
 @item Ada.Dynamic_Priorities (D.5)
 This package allows the priorities of a task to be adjusted dynamically
 as the task is running.
 
+@item Ada.Environment_Variables (A.17)
+This package provides facilities for accessing environment variables.
+
 @item Ada.Exceptions (11.4.1)
 This package provides additional information on exceptions, and also
 contains facilities for treating exceptions as data objects, and raising
 exceptions with associated messages.
 
+@item Ada.Execution_Time (D.14)
+Not implemented in GNAT.
+
+@item Ada.Execution_Time.Group_Budgets (D.14.2)
+Not implemented in GNAT.
+
+@item Ada.Execution_Time.Timers (D.14.1)'
+Not implemented in GNAT.
+
 @item Ada.Finalization (7.6)
 This package contains the declarations and subprograms to support the
 use of controlled types, providing for automatic initialization and
-finalization (analogous to the constructors and destructors of C++)
+finalization (analogous to the constructors and destructors of C++).
+
+@item Ada.Float_Text_IO (A.10.9)
+A library level instantiation of Text_IO.Float_IO for type Float.
+
+@item Ada.Float_Wide_Text_IO (A.10.9)
+A library level instantiation of Wide_Text_IO.Float_IO for type Float.
+
+@item Ada.Float_Wide_Wide_Text_IO (A.10.9)
+A library level instantiation of Wide_Wide_Text_IO.Float_IO for type Float.
+
+@item Ada.Integer_Text_IO (A.10.9)
+A library level instantiation of Text_IO.Integer_IO for type Integer.
+
+@item Ada.Integer_Wide_Text_IO (A.10.9)
+A library level instantiation of Wide_Text_IO.Integer_IO for type Integer.
+
+@item Ada.Integer_Wide_Wide_Text_IO (A.10.9)
+A library level instantiation of Wide_Wide_Text_IO.Integer_IO for type Integer.
 
 @item Ada.Interrupts (C.3.2)
 This package provides facilities for interfacing to interrupts, which
@@ -15691,12 +15902,22 @@ or condition names) that can be handled by GNAT@.
 This package defines the set of exceptions that can be raised by use of
 the standard IO packages.
 
+@item Ada.Iterator_Interfaces (5.5.1)
+This package provides a generic interface to generalized iterators.
+
+@item Ada.Locales (A.19)
+This package provides declarations providing information (Language
+and Country) about the current locale.
+
 @item Ada.Numerics
 This package contains some standard constants and exceptions used
 throughout the numerics packages.  Note that the constants pi and e are
 defined here, and it is better to use these definitions than rolling
 your own.
 
+@item Ada.Numerics.Complex_Arrays (G.3.2)
+Provides operations on arrays of complex numbers.
+
 @item Ada.Numerics.Complex_Elementary_Functions
 Provides the implementation of standard elementary functions (such as
 log and trigonometric functions) operating on complex numbers using the
@@ -15762,6 +15983,12 @@ The following predefined instantiations of this package exist
 @code{Ada.Numerics.Long_Elementary_Functions}
 @end table
 
+@item Ada.Numerics.Generic_Real_Arrays (G.3.1)
+Generic operations on arrays of reals
+
+@item Ada.Numerics.Real_Arrays (G.3.1)
+Preinstantiation of Ada.Numerics.Generic_Real_Arrays (Float).
+
 @item Ada.Real_Time (D.8)
 This package provides facilities similar to those of @code{Calendar}, but
 operating with a finer clock suitable for real time control. Note that
@@ -15770,6 +15997,9 @@ guarantees this behavior, but of course if the external clock on which
 the GNAT runtime depends is deliberately reset by some external event,
 then such a backward jump may occur.
 
+@item Ada.Real_Time.Timing_Events (D.15)
+Not implemented in GNAT.
+
 @item Ada.Sequential_IO (A.8.1)
 This package provides input-output facilities for sequential files,
 which can contain a sequence of values of a single type, which can be
@@ -15802,6 +16032,9 @@ strings.  The bounded model requires a maximum length.  It is thus
 somewhat more limited than the unbounded model, but avoids the use of
 dynamic allocation or finalization.
 
+@item Ada.Strings.Bounded.Equal_Case_Insensitive (A.4.10)
+Provides case-insensitive comparisons of bounded strings
+
 @item Ada.Strings.Fixed (A.4.3)
 This package provides facilities for handling fixed length strings.
 
index 6fb1c856696ac76d2cc640196ca4c1af181b29c3..8b8c58a66cd5bf95b914f6f840ef376f31245a51 100644 (file)
@@ -2557,7 +2557,7 @@ package body Sem_Elab is
                Error_Msg_Node_2 := Task_Scope;
                Error_Msg_NE
                  ("info: activation of an instance of task type&" &
-                  " requires pragma Elaborate_All on &?l?", N, Ent);
+                  " requires pragma Elaborate_All on &?", N, Ent);
             end if;
 
             Activate_Elaborate_All_Desirable (N, Task_Scope);
index f08681ade7730bc64474c26288931d25ee5bb68a..ad42534217a52467b6af7857310550a2e10546bc 100644 (file)
@@ -11989,8 +11989,6 @@ package body Sem_Util is
       Last_Assignment_Only : Boolean := False)
    is
    begin
-      --  ??? do we have to worry about clearing cached checks?
-
       if Is_Assignable (Ent) then
          Set_Last_Assignment (Ent, Empty);
       end if;