[all-commits] [llvm/llvm-project] 0a10e8: [flang] Implement legacy %VAL and %REF actual argu...

jeanPerier via All-commits all-commits at lists.llvm.org
Fri Oct 27 01:34:10 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0a10e88915167c88443dd58883e01d543963e40e
      https://github.com/llvm/llvm-project/commit/0a10e88915167c88443dd58883e01d543963e40e
  Author: jeanPerier <jperier at nvidia.com>
  Date:   2023-10-27 (Fri, 27 Oct 2023)

  Changed paths:
    M flang/include/flang/Evaluate/call.h
    M flang/include/flang/Evaluate/type.h
    M flang/lib/Evaluate/call.cpp
    M flang/lib/Evaluate/formatting.cpp
    M flang/lib/Evaluate/type.cpp
    M flang/lib/Lower/CallInterface.cpp
    M flang/lib/Semantics/expression.cpp
    A flang/test/Lower/HLFIR/calls-percent-val-ref.f90
    A flang/test/Semantics/call40.f90

  Log Message:
  -----------
  [flang] Implement legacy %VAL and %REF actual arguments (#70343)

Update evaluate::ActualArgument to propagate the %VAL and %REF markers
until lowering.
Semantic checks are added to %VAL to ensure the argument is a numerical
or logical scalar.

I did not push these markers into the characteristics because other
compilers do not complain about inconsistent usages (e.g. using %VAL in
a call on a procedure with an interface without VALUE dummies is not
flagged by any compilers I tested, and it is not an issue for lowering,
so I decided to stay simple here and minimize the footprint of these
legacy features).

Lowering retrieves these markers and does the right thing: pass %VAL in
registers and pass %REF by address without adding any extra arguments
for characters.




More information about the All-commits mailing list