CVS difference for ai12s/amd2xcon.txt

Differences between 1.21 and version 1.22
Log of other versions for file ai12s/amd2xcon.txt

--- ai12s/amd2xcon.txt	2019/02/09 03:48:30	1.21
+++ ai12s/amd2xcon.txt	2019/02/13 06:14:59	1.22
@@ -292,20 +292,17 @@
 !corrigendum 4.3(3/2)
 !AI-0127-1
 !AI-0212-1
+!AI-0307-1
 
 @drepl
 The expected type for an @fa<aggregate> shall be a single array type, record
 type, or record extension.
 @dby
-The expected type for a @fa<delta_aggregate> shall be a single array type, or
-a single descendant of a record type or of a record extension.
-The expected type for an @fa<array_aggregate>, a @fa<record_aggregate>, or an 
-@fa<extension_aggregate> shall be a single array type, record type, or 
-record extension. The expected type for a @fa<container_aggregate> shall be a 
-single array type or a single type with the Aggregate aspect specified.
+The expected type for an @fa<aggregate> shall be a single array type,
+a single type with the Aggregate aspect specified, or a single
+descendant of a record type or of a record extension.
 
 
-
 !corrigendum 4.3.1(17/3)
 !AI-0086-1
 !AI-0127-1
@@ -328,6 +325,25 @@
 and there shall be at least one such value.
 
 
+!corrigendum 4.3.3(3/2)
+!AI-0212-1
+!AI-0306-1
+
+@drepl
+@xindent<@fa<positional_array_aggregate>@fa<@ ::=@ >@hr
+@ @ @ @ (@fa<expression>,@ @fa<expression>@ {,@ @fa<expression>})@hr
+@ @ |@ (@fa<expression>@ {,@ @fa<expression>},@ @b<others>@ =@>@ @fa<expression>)@hr
+@ @ |@ (@fa<expression>@ {,@ @fa<expression>},@ @b<others>@ =@>@ <@>>
+@dby
+@xindent<@fa<positional_array_aggregate>@fa<@ ::=@ >@hr
+@ @ @ @ (@fa<expression>,@ @fa<expression>@ {,@ @fa<expression>})@hr
+@ @ |@ (@fa<expression>@ {,@ @fa<expression>},@ @b<others>@ =@>@ @fa<expression>)@hr
+@ @ |@ (@fa<expression>@ {,@ @fa<expression>},@ @b<others>@ =@>@ <@>)@hr
+@ @ |@ '['@ @fa<expression>@ {,@ @fa<expression>}[,@ @b<others>@ =@>@ @fa<expression>]@ ']'@hr
+@ @ |@ '['@ @fa<expression>@ {,@ @fa<expression>},@ @b<others>@ =@>@ <@>@ ']'>
+
+@xindent<@fa<null_array_aggregate>@fa<@ ::=@ >'['@ ']'>
+
 !corrigendum 4.3.3(4)
 !AI-0127-1
 !AI-0212-1
@@ -361,6 +377,18 @@
 @ @ @ @ @b<for> @fa<defining_identifier>@ @b<in>@ @fa<discrete_choice_list>@ =@>@ @fa<expression>@hr
 @ @ |@ @b<for> @fa<iterator_specification>@ =@>@ @fa<expression>>
 
+!corrigendum 4.3.3(9)
+!AI-0212-1
+!AI-0306-1
+
+@drepl
+An @fa<array_aggregate> of an n-dimensional array type shall be written as
+an n-dimensional @fa<array_aggregate>.
+@dby
+An @fa<array_aggregate> of an n-dimensional array type shall be written as
+an n-dimensional @fa<array_aggregate>, or as a @fa<null_array_aggregate>.
+
+
 !corrigendum 4.3.3(17/3)
 !AI-0061-1
 !AI-0127-1
@@ -408,7 +436,50 @@
 of the @fa<iterator_specification> is the value produced by the iteration
 (as described in 5.5.2).
 
+!corrigendum 4.3.3(26)
+!AI-0212-1
+!AI-0306-1
+
+@dinsa
+@xbullet<For a @fa<positional_array_aggregate> (or equivalent 
+@fa<string_literal>) without an @b<others> choice, the lower bound is that 
+of the corresponding index range in the applicable index constraint, if 
+defined, or that of the corresponding index subtype, if not; in either case, 
+the upper bound is determined from the lower bound and the number of 
+@fa<expression>s (or the length of the @fa<string_literal>);>
+@dinss
+
+@xbullet<For a @fa<null_array_aggregate>, bounds for each dimension are 
+determined as for a @fa<positional_array_aggregate> without an @b<others> 
+choice with zero expressions for each dimension;>
+
+@xbullet<For a @fa<named_array_aggregate> containing only
+@fa<iterated_component_association>s with an @fa<iterator_specification>, the
+lower bound is determined as for a @fa<positional_array_aggregate> without
+an @b<others> choice, and the upper bound is determined from the lower
+bound and the total number of values produced by the iteration(s);>
+
+!corrigendum 4.3.3(32/3)
+!AI12-0061-1
+!AI12-0306-1
+
+@drepl
+@xindent<@s9<NOTES@hr
+11  In an @fa<array_aggregate>, positional notation may only be used with two
+or more @fa<expression>s; a single @fa<expression> in parentheses is
+interpreted as a parenthesized expression. A @fa<named_array_aggregate>, such
+as (1 =@> X), may be used to specify an array with a single component.>>
+@dby
+@xindent<@s9<NOTES@hr
+11  In an @fa<array_aggregate> delimited by parentheses, positional notation may 
+only be used with two or more @fa<expression>s; a single @fa<expression> in 
+parentheses is interpreted as a parenthesized expression. An @fa<array_aggregate>
+delimited by brackets may be used to specify an array with a single component.>
+
+@xindent<@s9<12  An index parameter is a constant object (see 3.3).>>
+
 
+
 !corrigendum 4.3.4(0)
 !AI-0127-1
 !AI-0212-1
@@ -570,25 +641,25 @@
 nonlimited type.
 
 In the remainder of this subclause,
-we will refer to nonlimited subtypes @i<Val_Type> and @i<Acc_Type> of a
+we will refer to nonlimited subtypes @i<Value_Type> and @i<Accum_Type> of a
 @fa<reduction_attribute_reference>. These subtypes and interpretations of
 the @fa<name>s and @fa<expression>s of a @fa<reduction_attribute_reference>
 are determined by the following rules:
 
-@xbullet<@i<Acc_Type> is a subtype of the expected type of
+@xbullet<@i<Accum_Type> is a subtype of the expected type of
 the @fa<reduction_attribute_reference>.>
 
 @xbullet<A @i<reducer subprogram> is either subtype conformant with the following
 specification:>
 
-@xcode<   @b<function> Reducer(Accumulator : @i<Acc_Type>; Value : @i<Val_Type>) @b<return> @i<Acc_Type>;>
+@xcode<   @b<function> Reducer(Accumulator : @i<Accum_Type>; Value : @i<Value_Type>) @b<return> @i<Accum_Type>;>
 
 @xindent<or is subtype conformant with the following specification:>
 
-@xcode<   @b<procedure> Reducer(Accumulator : @b<in out> @i<Acc_Type>; Value : @b<in> @i<Val_Type>);>
+@xcode<   @b<procedure> Reducer(Accumulator : @b<in out> @i<Accum_Type>; Value : @b<in> @i<Value_Type>);>
 
 @xbullet<A @i<combiner subprogram> is a reducer subprogram where both parameters are 
-of subtype @i<Acc_Type>.>
+of subtype @i<Accum_Type>.>
 
 @xbullet<The @i<reducer_>@fa<name> of a @fa<reduction_specification> denotes a 
 reducer subprogram.>
@@ -597,10 +668,10 @@
 denotes a combiner subprogram.>
 
 @xbullet<The expected type of an @i<initial_value_>@fa<expression> of a 
-@fa<reduction_specification> is that of subtype @i<Acc_Type>.>
+@fa<reduction_specification> is that of subtype @i<Accum_Type>.>
 
 @xbullet<The expected type of the @fa<expression> of a @fa<value_sequence>
-is that of subtype @i<Val_Type>.>
+is that of subtype @i<Value_Type>.>
 
 @xbullet<For an @fa<iterated_component_association> of a @fa<value_sequence> 
 that has a @fa<discrete_choice_list> comprising a single @fa<range>, the
@@ -661,7 +732,7 @@
 @fa<iterator_specification> (as described
 in 5.5.2), and for each value produced by the iterator, the
 associated @fa<expression> is evaluated with the loop parameter having
-this value, to produce a result that is converted to Val_Type, and
+this value, to produce a result that is converted to Value_Type, and
 used to define the next value in the sequence;>
 
 @xbullet<otherwise, the @fa<discrete_choice_list> of the 
@@ -669,7 +740,7 @@
 in increasing order, of the discrete subtype or range defined by the 
 @fa<discrete_choice_list>, the associated @fa<expression> is evaluated 
 with the index parameter having this value, to produce a result that is 
-converted to Val_Type, and used to define the next value in the sequence.>
+converted to Value_Type, and used to define the next value in the sequence.>
 
 If the @fa<value_sequence> does not have the reserved word @b<parallel>, it is
 produced as a single sequence of values by a single logical thread of
@@ -688,13 +759,13 @@
 This attribute represents a @i<reduction expression>, and is in the 
 form of a @fa<reduction_attribute_reference>.>
 
-@xindent<The evaluation of a use of this attribute
-begins by evaluating the @fa<value_sequence> V and the parts of the
-@fa<reduction_attribute_designator> (the @i<reducer_>@fa<name> Reducer, the
-@i<initial_value_>@fa<expression> Initial_Value, and the 
+@xindent<The evaluation of a use of this attribute begins by evaluating the 
+parts of the @fa<reduction_attribute_designator> (the @i<reducer_>@fa<name> 
+Reducer, the @i<initial_value_>@fa<expression> Initial_Value, and the 
 @i<combiner_>@fa<name> Combiner, if any), in an arbitrary order. It then 
 initializes the @i<accumulator> of the reduction expression to the value 
-of the @i<initial_value_>@fa<expression> (the @i<initial value>).>
+of the @i<initial_value_>@fa<expression> (the @i<initial value>). The
+@fa<value_sequence> V is then evaluated.>
 
 @xindent<If the @fa<value_sequence> does not have the reserved word 
 @b<parallel>, each value of the @fa<value_sequence> is passed, in order, 
@@ -764,7 +835,7 @@
 specified, then it is a bounded error if the initial value is not the
 (left) identity of the combiner subprogram. That is, the result of
 calling the combiner subprogram with the Accumulator being the initial
-value and the Value being any arbitrary value of subtype @i<Acc_Type> should
+value and the Value being any arbitrary value of subtype @i<Accum_Type> should
 produce a result equal to the Value parameter. The possible consequences
 are Program_Error, or a result that does not match the equivalent
 sequential reduction expression due to multiple uses of the
@@ -1232,6 +1303,229 @@
 and specific postcondition of the formal subprogram itself.
 
 
+!corrigendum 6.1.2(0)
+!AI-0079-1
+!AI-0310-1
+
+@dinsc
+
+For a program unit, formal package, formal subprogram, formal
+object of an anonymous access-to-subprogram type, and for a named
+access-to-subprogram type or composite type (including a formal type),
+the following language-defined aspect may be specified
+with an @fa<aspect_specification> (see 13.1.1):
+
+@xhang<@xterm<Global>The syntax for the @fa<aspect_definition> used to 
+define a Global aspect is as follows:>
+
+@xindent<@fa<global_aspect_definition>@fa<@ ::=@ >@hr
+@ @ @ @ @fa<primitive_global_aspect_definition>@hr
+@ @ |@ @i<global_>@fa<attribute_reference>@hr
+@ @ |@ @fa<global_aspect_definition> & @i<global_>@fa<attribute_reference>>
+
+@xindent<@fa<primitive_global_aspect_definition>@fa<@ ::=@ >@hr
+@ @ @ @ @b<null>@hr
+@ @ |@ @fa<global_mode> @fa<global_name>@hr
+@ @ |@ @fa<global_mode> @fa<global_designator>@hr
+@ @ |@ (@fa<global_mode> @fa<global_set>{, @fa<global_mode> @fa<global_set>})>
+
+@xindent<@fa<global_mode>@fa<@ ::=@ >[ @fa<global_mode_qualifier> ] @fa<basic_global_mode>>
+
+@xindent<@fa<global_mode_qualifier>@fa<@ ::=@ >@hr
+@ @ @ @ @b<synchronized>@hr
+@ @ |@ @i<implementation-defined_>@fa<identifier>>
+
+@xindent<@fa<basic_global_mode>@fa<@ ::=@ >@b<in> | @b<in out> | @b<out>>
+
+@xindent<@fa<global_set>@fa<@ ::=@ >@hr
+@ @ @ @ @fa<global_name> {, @fa<global_name>}@hr
+@ @ |@ @fa<global_designator>>
+
+@xindent<@fa<global_designator>@fa<@ ::=@ >@b<all> | @b<null>>
+
+@xindent<@fa<global_name>@fa<@ ::=@ >@hr
+@ @ @ @ @i<object_>@fa<name>@hr
+@ @ |@ [@b<private of>] @i<package_>@fa<name>@hr
+@ @ |@ @i<access_>@fa<subtype_mark>@hr
+@ @ |@ @b<access> @fa<subtype_mark>>
+
+@xindent<A @i<global_>@fa<attribute_reference> is an @fa<attribute_reference>
+whose @fa<attribute_designator> is Global.>
+
+@xindent<The Global aspect identifies the set of variables (which, for the purposes
+of this clause includes all task objects) global to a callable
+entity that are potentially read or updated as part of the execution
+of a call on the entity. If not specified, the aspect defaults to the
+Global aspect for the nearest enclosing program unit. If not
+specified for a library unit, the aspect defaults to @fc<Global =@> @b<null>>
+for a nongeneric library unit that is declared Pure, and to @fc<Global
+=@> @b<in out all>> otherwise.>
+
+For a dispatching subprogram or a tagged type, the following language-defined
+aspect may be specified with an @fa<aspect_specification> (see 13.1.1):
+
+@xhang<@xterm<Global'Class>The syntax for the @fa<aspect_definition> used to 
+define a Global'Class aspect is the same as that defined above for 
+@fa<global_aspect_definition>. This aspect identifies an upper bound on the
+set of variables global to a dispatching operation that can be read
+or updated as a result of a dispatching call on the operation. If not
+specified, the aspect defaults to the Global aspect for the
+nearest enclosing program unit.>
+
+@s8<@i<Name Resolution Rules>>
+
+A @fa<global_name> that does not have the reserved word @b<access> shall 
+resolve to statically denote an object, a
+package (including a limited view of a package), or an
+access-to-variable subtype. The @fa<subtype_mark> of a @fa<global_name>
+that has the reserved word @b<access> shall resolve to denote a subtype 
+(possibly an incomplete type).
+
+@s8<@i<Static Semantics>>
+
+A @fa<global_aspect_definition> defines the Global or Global'Class aspect of
+some entity. The Global aspect identifies the sets of global variables
+that can be read, written, or modified as a side effect of some
+operation. The Global'Class aspect associated with a tagged
+type @i<T> (or one of its dispatching operations) represents a restriction on
+the Global aspect on any descendant of type @i<T> (or its corresponding
+operation).
+
+The Global aspect for a callable entity defines the global variables
+that might be referenced as part of a call on the entity. The Global
+aspect for a composite type identifies the global variables that might
+be referenced during default initialization, adjustment as part of
+assignment, or finalization of an object of the type. The Global aspect
+for an access-to-subprogram object (or type) identifies the global
+variables that might be referenced when calling via the object (or any
+object of that type). The Global aspect for any other elementary
+type is null.
+
+The following is defined in terms of operations; the rules apply to all
+of the above kinds of entities.
+
+The sets of global variables associated with a Global aspect can be
+defined explicitly with a @fa<primitive_global_aspect_definition> or can be
+defined by combining with the sets specified for other entities by
+referring to their Global attribute.
+
+The global variables associated with any mode can be read as a side
+effect of an operation. The @b<in out> and @b<out> @fa<global_mode>s together
+identify the set of global variables that can be updated as a side
+effect of an operation. The @fa<global_mode_qualifier> @b<synchronized> 
+reduces the set to those objects that are of one of the following sort of 
+types:
+
+@xbullet<a protected, task, or synchronized tagged type;>
+@xbullet<an atomic type;>
+@xbullet<a descendant of the language-defined types Suspension_Object
+or Synchronous_Barrier;>
+@xbullet<a record type all of whose components are @i<sychronized> in this 
+sense;>
+@xbullet<an array type whose component type is @i<sychronized> in this 
+sense.>
+
+An implementation-defined @fa<global_mode_qualifier> may be specified, which
+reduces the set according to an implementation-defined rule.
+
+The overall set of objects associated with each @fa<global_mode> includes all
+objects identified for the mode in the
+@fa<primitive_global_aspect_definition> (subject to the
+@fa<global_mode_qualifier>), if any, plus all objects associated with the
+given mode for the entities identified by the @fa<prefix>es of the
+@i<global_>@fa<attribute_reference>s, if any.
+
+A @fa<global_set> identifies a @i<global variable set> as follows:
+
+@xbullet<@b<null> identifies the empty set of global variables;>
+@xbullet<@b<all> identifies the set of all global variables;>
+@xbullet<@fa<global_name>{, @fa<global_name>} identifies the union of the
+sets of variables identified by the @fa<global_name>s in the list,
+for the following forms of @fa<global_name>:>
+
+@xinbull<@i<object_>@fa<name> identifies the specified global variable (or
+nonpreelaborable constant);>
+
+@xinbull<@i<package_>@fa<name> identifies the set of all variables declared 
+within the declarative region of the package having the same accessibility
+level as the package, but not including those within the declarative
+region of a public child of the package; if the reserved words @b<private of>
+precede the @i<package_>@fa<name>, the set is reduced to those variables
+declared in the private part or body of the package or within
+a private descendant of the package;>
+
+@xinbull<@i<access_>@fa<subtype_mark> identifies the set of (aliased) 
+variables that can be designated by values of the given access-to-variable 
+type;>
+
+@xinbull<@b<access> @fa<subtype_mark> identifies the set of (aliased) objects 
+that can be designated by values of an access-to-variable type with a
+designated subtype statically matching the given @fa<subtype_mark>.>
+
+@s8<@i<Legality Rules>>
+
+Within a @fa<primitive_global_aspect_definition>, a given @fa<global_mode> shall
+be specified at most once without a @fa<global_mode_qualifier>, and at most
+once with any given @fa<global_mode_qualifier>. Similarly, within a
+@fa<primitive_global_aspect_definition>, a given entity shall be named at
+most once by a @fa<global_name>.
+
+If an entity has a Global aspect other than @b<in out all>, then the
+associated operation(s) shall read only those variables global to the
+entity that are within the global variable set associated with the @b<in>,
+@b<in out>, or @b<out> modes, and the operation(s) shall update only those
+variables global to the entity that are within the global variable set
+associated with either the @b<in out> or @b<out> @fa<global_mode>s. This 
+includes any calls occurring during the execution of the operation, 
+presuming those
+calls read and update all global variables permitted by their Global
+aspect (or Global'Class aspect, if a dispatching call).
+
+If a variable global to the entity is read that is within the global variable
+set associated with the @b<out> @fa<global_mode>, it shall be updated 
+somewhere within the callable entity (or an entity it calls).
+
+If an implementation-defined @fa<global_mode_qualifier> applies to a given
+set of variables, an implementation-defined rule determines what sort
+of references to them are permitted.
+
+For a subprogram that is a dispatching operation of a tagged type @i<T>,
+each mode of its Global aspect shall identify a subset of the variables
+identified by the corresponding mode, or by the @b<in out> mode, of the
+Global'Class aspect of a corresponding dispatching subprogram of any
+ancestor of @i<T>. A corresponding rule applies to the Global aspect of a
+tagged type @i<T> relative to the Global'Class aspect of any ancestor of @i<T>.
+
+For a @fa<prefix> S that statically denotes a subprogram (including a formal
+subprogram), formal object of an anonymous access-to-subprogram type, or a type
+(including a formal type), the following attribute is defined:
+
+@xhang<@xterm<S'Global>Identifies the global variable set for each of the three
+@fa<global_mode>s, for the given subprogram, object, or type;
+a reference to this attribute may only appear within
+a @fa<global_aspect_definition>.>
+
+@s8<@i<Implementation Permissions>>
+
+For a call on a subprogram that has a Global aspect that indicates 
+that there are no references to global variables, the implementation 
+may omit the call:
+
+@xbullet<if the results are not needed after the call; or>
+
+@xbullet<simply reuse the results produced by an earlier call on the same 
+   subprogram, provided that none of the parameters nor any object 
+   accessible via access values from the parameters have any part that is 
+   of a type whose full type is an immutably limited type, and the 
+   addresses and values of all by-reference actual parameters, the values 
+   of all by-copy-in actual parameters, and the values of all objects 
+   accessible via access values from the parameters, are the same as they 
+   were at the earlier call.>
+
+This permission applies even if the 
+subprogram produces other side effects when called.
+ 
+
 
 !corrigendum 7.3.2(8/3)
 !AI-0075-1
@@ -1890,6 +2184,33 @@
 language-defined unit is enabled (see 6.1.1) unless suppressed (see 11.5). 
 Similarly, any predicate checks for a subtype occurring in the specification 
 of a language-defined unit are enabled (see 3.2.4) unless suppressed. 
+
+
+!corrigendum 11.5(23)
+!AI-0112-1
+!AI-0309-1
+!AI-0311-1
+
+@dinsa
+@xhang<@xterm<Storage_Check>
+Check that evaluation of an @fa<allocator> does not require more space than 
+is available for a storage pool. Check that the space available for a task 
+or subprogram has not been exceeded.>
+@dinss
+@xbullet<The following check corresponds to situations in which the exception 
+Tasking_Error is raised upon failure of a language-defined check.>
+
+@xhang<@xterm<Tasking_Check>
+Check that all tasks activated successfully. Check that a called task
+has not yet terminated.>
+
+@xbullet<The following check corresponds to situations in which the exception
+Assertion_Error is raised upon failure of a language-defined check.>
+
+@xhang<@xterm<Containers_Assertion_Check>
+Check the precondition of a routine declared in a descendant unit of Containers
+or in an instance of a generic unit that is declared in, or is, a 
+descendant unit of Containers.>
 
 
 

Questions? Ask the ACAA Technical Agent