To: J3 J3/22-109r1 From: John Reid & Jon Steidel Subject: Locality spec limitations Date: 2022-March-01 References: 18-007r1 ---------------------------------------------------------------------- NUMBER: F18/0xx TITLE: Locality spec limitations DEFECT TYPE: Erratum STATUS: J3 consideration in progress BACKGROUND In 11.1.7.2 Form of the DO construct, C1128 states "A that appears in a LOCAL or LOCAL_INIT shall not have the ALLOCATABLE, INTENT (IN), or OPTIONAL attribute, shall not be of finalizable type, shall not be a nonpointer polymorphic dummy argument, and shall not be a coarray or an assumed-size array." QUESTION 1: Was it intended to allow a variable with an ultimate component of finalizable type here? QUESTION 2: Was it intended to allow a variable with a coarray ultimate component here? QUESTION 3: Was it intended to allow a variable with an allocatable ultimate component here? ANSWER 1: A variable with an ultimate component of finalizable type should not be allowed here. Final subroutines may have side effects that make them unsuitable for concurrent execution. An edit is suggested. ANSWER 2: A variable with a coarray ultimate component should not be allowed here. If such a variable has an allocated coarray ultimate component and appears in a LOCAL_INIT , the corresponding construct variable would be initialized to have its value, which would involve allocating the coarray ultimate component and coarray synchronization. There is no requirement for a DO CONCURRENT construct to be executed on all images of the current team. An edit is suggested. ANSWER 3: A variable with an allocatable ultimate component of should not be allowed here for consistency with the rule for variables quoted above. An edit is suggested. EDIT to 18-007r1: [181:22-24] In 11.1.7.2 Form of the DO construct, C1128, sentence 1, after "finalizable type" add "or of a type that has an ultimate component of finalizable type," and change "and shall not be a coarray or" to "shall not be a coarray or of a type that has an allocatable ultimate component, and shall not be" so that the sentence reads "A that appears in a LOCAL or LOCAL_INIT shall not have the ALLOCATABLE, INTENT (IN), or OPTIONAL attribute, shall not be of finalizable type or of a type that has an ultimate component of finalizable type, shall not be a nonpointer polymorphic dummy argument, shall not be a coarray or of a type that has an allocatable ultimate component, and shall not be an assumed-size array." SUBMITTED BY: John Reid HISTORY: 22-xxx m226 Submitted