CVS difference for ai12s/ai12-0363-1.txt

Differences between 1.4 and version 1.5
Log of other versions for file ai12s/ai12-0363-1.txt

--- ai12s/ai12-0363-1.txt	2020/06/11 03:11:28	1.4
+++ ai12s/ai12-0363-1.txt	2020/06/17 00:20:22	1.5
@@ -1,8 +1,10 @@
-!standard 3.10.2(26/3)                                  20-06-10  AI12-0363-1/04
+!standard 3.10.2(26/3)                                  20-06-15  AI12-0363-1/05
 !standard 9.10(1/5)
 !standard C.6(13.3/5)
 !standard C.6(19.1/5)
 !class Amendment 20-02-05
+!status Amendment 1-2012 20-06-15
+!status ARG Approved 10-0-2  20-06-13
 !status work item 20-02-05
 !status received 19-11-12
 !priority Low
@@ -94,7 +96,7 @@
   * The view shall not be a subcomponent that depends on discriminants
     of an object unless the object is known to be constrained{;
 
-  * The view shall not be a nonatomic subcomponent of an atomic object
+  * The view shall not be a nonatomic subcomponent of a full access object
     (see C.6)}.
 
 Modify 9.10 (1/5):
@@ -124,29 +126,37 @@
   True, then the Volatile_Components aspect (if defined) is True, and
   vice versa. When not determined by one of the other aspects, or for an
   object by its type, the Volatile, Volatile_Components, Independent,
-  and Independent_Components aspects are False.
+  and Independent_Components aspects are False.}
 
-     AARM Ramification: Aspects Volatile and Volatile_Components (when
+     {AARM Ramification: Aspects Volatile and Volatile_Components (when
      defined) are equivalent. We provide the Volatile_Components aspect
      only to give symmetry with Atomic_Components and
-     Independent_Components aspects.
+     Independent_Components aspects.}
 
 Add after C.6(8.1/4):
 
   The Full_Access_Only aspect shall not be specified unless the
-  associated type or object is volatile [Reduntant:(or atomic)]. A /full
+  associated type or object is volatile [Redundant:(or atomic)]. A /full
   access/ type is any atomic type, or a volatile type for which the
   aspect Full_Access_Only is True. A /full access/ object (including a
   component) is any atomic object, or a volatile object for which the
   aspect Full_Access_Only is True for the object [Redundant: or its
   type]. A Full_Access_Only aspect is illegal if any subcomponent of
-  the object or type is a full access object.
+  the object or type is a full access object or is of a generic formal 
+  type.
 
     AARM Ramification: This last rule breaks privacy, but that is
     considered OK for representation clauses when there is no clear
     alternative. Note that atomic objects may be nested, so long as the
     outer atomic object does not have the Full_Access_Only aspect True.
 
+    AARM Reason: We disallow subcomponents of a generic formal type 
+    in a Full_Access_Only object or type as the actual to a formal
+    type can be a full access type. We could have had a less restrictive
+    rule, but such a use is unlikely as full access only objects are intended
+    to be used to access memory-mapped devices with access restrictions, and
+    those will need a concrete mapping not possible for generic formal types.
+
 Modify C.6(12/5):
 
   If an atomic object is passed as a parameter, then the formal
@@ -167,8 +177,8 @@
    volatile type is used as an actual for a generic formal array type,
    then the element type of the formal type shall be volatile. If an
    atomic type is used as an actual for a generic formal derived type,
-   then the ancestor of the formal type shall be atomic. A corresponding
-   rule applies to volatile types.
+   then the ancestor of the formal type shall be atomic. A corresponding 
+   rule applies to volatile types and similarly to full access types.
 
 with:
 
@@ -183,7 +193,8 @@
   formal array type, then the components of the formal type shall be
   volatile. Furthermore, if the actual type has atomic components and
   the formal array type has aliased components, then the
-  components of the formal array type shall also be atomic.
+  components of the formal array type shall also be atomic. A corresponding 
+  rule applies when the actual type has volatile full access components.
 
     AARM Reason: The limitations on formal array types are separate for
     volatile and atomic because of the fact that only volatility is
@@ -203,7 +214,7 @@
 Modify C.6(13.3/5):
 
   If a nonatomic subcomponent of [an atomic]{a full access} object is
-  passed as the actual parameter in a call then the formal parameter
+  passed as {an}[the] actual parameter in a call then the formal parameter
   shall allow pass by copy (and, at run time, the parameter shall be
   passed by copy). A nonatomic subcomponent of [an atomic]{a full
   access} object shall not be used as an actual for a generic formal of
@@ -244,8 +255,8 @@
 
 For the issue of independent addressability, we remove the last sentence
 of (13.3/5), and change the rules associated with independent
-addressibility in 9.10 to say that threads can safely manipulate
-independently addressible components, unless they are subcomponents of
+addressability in 9.10 to say that threads can safely manipulate
+independently addressable components, unless they are subcomponents of
 the same full access object, and either is nonatomic. This also prevents
 breaking privacy. The existing sentence could require breaking privacy
 in certain cases.

Questions? Ask the ACAA Technical Agent