From 311300b15d0790b80189feb7b70cf3d666118311 Mon Sep 17 00:00:00 2001 From: peter klausler Date: Fri, 23 Aug 2019 15:35:18 -0700 Subject: [PATCH] [flang] more writing Original-commit: flang-compiler/f18@16a8b0065a6e31cbce5a28b5230df1aff8968cab Reviewed-on: https://github.com/flang-compiler/f18/pull/683 Tree-same-pre-rewrite: false --- flang/documentation/Calls.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/flang/documentation/Calls.md b/flang/documentation/Calls.md index f4993ca5a8ce..f6ea6e30e185 100644 --- a/flang/documentation/Calls.md +++ b/flang/documentation/Calls.md @@ -117,7 +117,7 @@ some design alternatives that are explored further below. 1. Shuffle `ENTRY` dummy arguments & jump to common entry point. 1. Complete `VALUE` copying if this step will not always be done by the caller (as I think it should be). -1. Finalize &/or re-initialize `INTENT(OUT)` non-pointer non-allocatable +1. Finalize &/or re-initialize `INTENT(OUT)` non-pointer actual arguments (see below). 1. Optionally compact assumed-shape arguments for contiguity on one or more leading dimensions to improve SIMD vectorization, if not @@ -147,7 +147,8 @@ the subroutine's alternate return. 1. Copy actual argument array designator data that was copied into a temporary back into its original storage (see below). 1. Complete deallocation of actual argument temporaries (not `VALUE`). -1. Reload host-escaping local objects from memory. +1. Reload definable host-escaping local objects from memory, if they + were saved to memory by the host before the call. 1. `GO TO` alternate return, if any. 1. Use the function result in an expression. 1. Eventually, finalize &/or deallocate the function result. @@ -166,7 +167,8 @@ by reference. This includes parenthesized designators like `(X)` as an important special case, which are expressions in Fortran. (This case also technically includes constants, but those are better -implemented by passing addresses in read-only memory.) +implemented by passing addresses in read-only memory when the interface +is explicit.) The dummy argument cannot be known to have `INTENT(OUT)` or `INTENT(IN OUT)`.