gnat_rm.texi: First set of documentation additions for predefined RM units.

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
This commit is contained in:
Robert Dewar 2014-02-25 15:27:16 +00:00 committed by Arnaud Charlet
parent 592574f5b3
commit 9972d439b8
5 changed files with 247 additions and 8 deletions

View 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.

View 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).

View 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.

View 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);

View 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;