CVS difference for ais/ai-00051.txt

Differences between 1.6 and version 1.7
Log of other versions for file ais/ai-00051.txt

--- ais/ai-00051.txt	2004/08/31 23:06:00	1.6
+++ ais/ai-00051.txt	2004/10/05 22:48:57	1.7
@@ -1,5 +1,15 @@
-!standard 13.03    (42)                               04-08-31  AI95-00051/12
+!standard 13.03    (25)                               04-09-27  AI95-00051/13
+!standard 13.03    (28)
+!standard 13.03    (30)
+!standard 13.03    (31)
+!standard 13.03    (32)
+!standard 13.03    (42)
+!standard 13.03    (43)
+!standard 13.03    (50)
+!standard 13.03    (56)
 !class binding interpretation 95-06-25
+!status Amendment 200Y 04-09-27
+!status ARG Approved 8-0-1  04-09-18
 !status work item 98-04-01
 !status ARG Approved (subject to letter ballot)  8-0-2  97-11-14
 !status work item (letter ballot was 4-4-3) 96-10-03
@@ -66,7 +76,7 @@
     "If the Alignment of a subtype is specified, then the Alignment of an object is
      at least as strict, unless the object's Alignment is also specified".
 with
-    "The Alignment of an object is as at least as strict as the alignment
+    "The Alignment of an object is at least as strict as the alignment
      of its subtype, unless the object's Alignment is specified".
 
 Replace 13.3(28) with
@@ -109,11 +119,12 @@
       integer type specifying a Size greater than the largest Size
       value that would be chosen by default (i.e. in the absence of a
       Size clause) for any signed integer type. Corresponding advice
-      applies for modular integer types, fixed point types, enumeration
-      types, record types, and array types.
+      applies for modular integer types, fixed point types, and enumeration
+      types.
 
-    - For floating point types, access types, protected types, and task types,
-      an implementation need not support a nonconfirming Size clause.
+    - For floating point types, access types, array types, record types,
+      protected types, and task types, an implementation need not support a
+      nonconfirming Size clause.
 
 !discussion
 
@@ -147,6 +158,120 @@
 
     type T4 is new Integer;
     for T4'Alignment use 3;  -- Need not be supported
+
+!corrigendum 13.3(25)
+
+@drepl
+@xindent<Alignment may be specified for first subtypes and stand-alone objects
+via an @fa<attribute_definition_clause>; the expression of such a clause shall
+be static, and its value nonnegative. If the Alignment of a subtype is
+specified, then the Alignment of an object of the subtype is at least as
+strict, unless the object's Alignment is also specified. The Alignment of an
+object created by an allocator is that of the designated subtype.>
+@dby
+@xindent<Alignment may be specified for first subtypes and stand-alone objects
+via an @fa<attribute_definition_clause>; the expression of such a clause shall
+be static, and its value nonnegative. The Alignment of an object is at least as
+strict as the alignment of its subtype, unless the object's Alignment is
+specified. The Alignment of an object created by an allocator is that of the
+designated subtype.>
+
+!corrigendum 13.3(28)
+
+@drepl
+If the Alignment is specified for an object that is not allocated under control
+of the implementation, execution is erroneous if the object is not aligned
+according to the Alignment.
+@dby
+Program execution is erroneous if an object that is not allocated under
+control of the implementation is not aligned according to its Alignment.
+
+
+!corrigendum 13.3(30)
+
+@drepl
+@xbullet<An implementation should support specified Alignments that are factors
+and multiples of the number of storage elements per word, subject to the
+following:>
+@dby
+@xbullet<An implementation need not support a nonconfirming Alignment clause
+specifying an Alignment which is neither zero nor a power of two.>
+
+!corrigendum 13.3(31)
+
+@drepl
+@xbullet<An implementation need not support specified Alignments for
+combinations of Sizes and Alignments that cannot be easily loaded and stored by
+available machine instructions.>
+@dby
+@xbullet<An implementation need not support an Alignment clause for a signed
+integer type specifying an Alignment greater than the largest Alignment value
+that would be chosen by default by the implementation for any signed integer
+type. Corresponding advice applies for modular integer types, fixed point
+types, enumeration types, record types, and array types.>
+
+@xbullet<For floating point types, access types, protected types, and task
+types, an implementation need not support a nonconfirming Alignment clause.>
+
+!corrigendum 13.3(32)
+
+@drepl
+@xbullet<An implementation need not support specified Alignments that are
+greater than the maximum Alignment the implementation ever returns by default.>
+@dby
+@xbullet<An implementation need not support a nonconfirming Alignment clause
+which could enable the creation of an elementary object which cannot be easily
+loaded and stored by available machine instructions.>
+
+!corrigendum 13.3(42)
+
+@drepl
+The recommended level of support for the Size attribute of objects is:
+@dby
+The recommended level of support for the Size attribute of objects is
+the same as for subtypes (see below).
+
+!corrigendum 13.3(43)
+
+@ddel
+@xbullet< A Size clause should be supported for an object if the specified Size
+is at least as large as its subtype's Size, and corresponds to a size in
+storage elements that is a multiple of the object's Alignment (if the Alignment
+is nonzero).>
+
+
+!corrigendum 13.3(50)
+
+@drepl
+If the Size of a subtype is specified, and allows for efficient independent
+addressability (see 9.10) on the target architecture, then the Size of the
+following objects of the subtype should equal the Size of the subtype:
+@dby
+If the Size of a subtype allows for efficient independent
+addressability (see 9.10) on the target architecture, then the Size of the
+following objects of the subtype should equal the Size of the subtype:
+
+!corrigendum 13.3(56)
+
+@dinsa
+@xbullet<For a subtype implemented with levels of indirection, the Size should
+include the size of the pointers, but not the size of what they point at.>
+@dinss
+@xbullet<An implementation need not support a Size clause for a signed integer
+type specifying a Size greater than the largest Size value that would be chosen
+by default (i.e. in the absence of a Size clause) for any signed integer type.
+Corresponding advice applies for modular integer types, fixed point types, and
+enumeration types.>
+
+@xbullet<For floating point types, access types, record types, array types,
+protected types, and task types, an implementation need not support a
+nonconfirming Size clause.>
+
+
+!ACATS Test
+
+There are existing "Recommended Level of Support" tests which cover most of
+this advice. It probably would be worth checking for missing coverage.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent