To: 07-137 From: Aleksandar Donev Subject: Definition of "compile time contiguous" Date: 2007 January 26 References: 06-311r1, 07-007, UTI 101 A straw vote was taken as proposed in 06-311 and it was recommended that pointer rank remapping for contiguous targets only be allowed when the target can be determined to be contiguous at compile-time (see UTI 101). A reasonable definition of this was already crafted at an earlier meeting and can be found at [319:7-16]. All that is needed is to name it and move it some place else. I propose the phrase "always-contiguous" and will use that as a placeholder. We also need to change rank-remapping restrictions. I also propose that we use this constraint in certain places where we currently have restrictions to ensure there is no copy in/out of dummy arguments. For example, restrictions on co-array passing, VOLATILE and ASYNCHRONOUS. Specifically, if the actual is always-contiguous, copy in/out does not need to be used. We already did this for co-arrays...this paper adds the rest of the edits. In this paper I do not propose to change anything about TARGETs and pointer-association accross argument passing as this is complex and should first be subjected to a technical discussion. QUESTION: I do not remember whether the straw vote discussion also included regular (non rank-remapping) pointer assignment. If it did, we also need to replace "contiguous" with "always-contiguous" at [165:9]. How about arguments to C_LOC (see [471:10])? I recommend that we do not require always-contiguous variables in those cases since in some cases the definition of always contiguous might be too restrictive. Edits: ---------- [165:10] Replace " shall be contiguous (5.3.6)" with: " shall be always contiguous (5.3.6)" [90:22-] Before section 5.3.7, add a new paragraph: "An object is <> if it satisfies the following conditions." Then copy [319:7-16+] here including Note 12.30. Add a final sentence to the Note: "An always-contiguous object is a contiguous object." [316:30] In C1235 replace "If an actual argument is an array section or an assumed-shape array," with "If an actual argument is not a pointer array and is not always-contiguous," [317:1] In C1236 replace: "If an actual argument is a pointer array," with "If an actual argument is a pointer array that does not have the CONTIGUOUS attribute," [319:6] Replace the end of the paragraph "shall satisfy the following conditions." with: "shall be always-contiguous." [320:2] Replace "compile-time contiguous" with "always-contiguous" # EOF