09-228r2 To: J3 From: Aleksandar Donev, Malcolm Cohen Subject: Incomplete constraint in CRITICAL Date: 2009/05/07 Constraint C810 is not statically checkable, because it is not always possible to tell if a statement is an image control statement. In addition, the image control statement may occur inside a subroutine whose code is not known to the compiler. There is also an oversight in that branching out of a CRITICAL construct should be forbidden. Edits are provided to correct these problems. Edits: ====== [130:15] Change the first sentence of p4 to: "When an ALLOCATE statement is executed for which an is a coarray, there is implicit synchronization of all images." [133:16] Replace the first sentence of p11 with: "When a DEALLOCATE statement is executed for which an is a coarray, there is implicit synchronization of all images." [174:18] In C810, before "an image control statement" insert "a RETURN statement or". [174:18+] Insert new constraint "C810a A statement that branches from the block of a to outside the is not permitted." {The CYCLE and EXIT statement do "internal branching" (see 2.3.5, though it is not particularly clearly specified).} [174:18+] In 8.1.5, append to p2: "A procedure invoked, directly or indirectly, from a CRITICAL construct shall not execute an image control statement." [189:23] Replace the fourth bullet item with: "ALLOCATE or DEALLOCATE statement that has a coarray ;". ===END===