CVS difference for ai05s/ai05-0117-1.txt

Differences between 1.5 and version 1.6
Log of other versions for file ai05s/ai05-0117-1.txt

--- ai05s/ai05-0117-1.txt	2010/10/19 03:05:44	1.5
+++ ai05s/ai05-0117-1.txt	2010/11/23 21:47:16	1.6
@@ -1,5 +1,7 @@
-!standard  C.6(16)                                   10-10-18    AI05-0117-1/02
+!standard  C.6(16)                                   10-11-23    AI05-0117-1/03
 !class Amendment 08-10-16
+!status Amendment 2012 10-11-23
+!status ARG Approved  10-0-1  10-10-31
 !status work item 08-10-16
 !status received 08-07-29
 !priority Medium
@@ -29,16 +31,16 @@
 
 !wording
 
-Delete C.6 (16)
+Replace C.6(16) with:
 
-Delete Implementation Note C.6(16.a).
+All tasks of the program (on all processors) that read or update volatile
+variables see the same order of updates to the variables.
 
-Add a new Implementation Note to AARM (or Implementation
-Advice to LRM):
+Replace Implementation Note C.6(16.a) with:
 
-On a multiprocessor, any read or update of a volatile object should involve
-the use of an appropriate memory barrier to ensure that all tasks
-on all processors see the same order of updates to volatile variables.
+AARM Implementation Note: To ensure this, on a multiprocessor, any read or
+update of a volatile object should involve the use of an appropriate memory
+barrier.
 
 !discussion
 
@@ -47,10 +49,11 @@
 caches etc cannot be used with volatile variables. This brings the Ada
 definition of volatile closer to that used in other languages.
 
-Paragraph C.6(16) is removed as 1.1.3 (13) already makes it clear
-that any read or update of a volatile object has an external effect.
+The original Paragraph C.6(16) is removed as 1.1.3 (13) already makes it
+clear that any read or update of a volatile object has an external effect;
+beyond that it is overspecification. It is replaced by a new paragraph that
+explains the requirements rather than an implementation.
 
-
 !example
 
 The following will ensure that task 2 does get the value 42.
@@ -64,20 +67,37 @@
 
 in task 1:
 
- Data := 42;
- Flag := True;
+  Data := 42;
+  Flag := True;
 
 
 in task 2:
-
- loop
-   exit when Flag;
- end loop;
- Copy := Data;
 
+  loop
+    exit when Flag;
+  end loop;
+  Copy := Data;
+
+!corrigendum C.6(16)
+
+@drepl
+For a volatile object all reads and updates of the object as a whole are
+performed directly to memory.
+@dby
+All tasks of the program (on all processors) that read or update volatile
+variables see the same order of updates to the variables.
 
 !ACATS test
 
+This is probably not testable within Ada, beyond the very simple tests
+already within the suite. The absence of an error in a test program
+doesn't tell much about whether the implementation is correct, since
+there is a very small window for an error compared to a much larger window
+for correct behavior.
+
+!ASIS
+
+This has no impact on ASIS.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent