[all-commits] [llvm/llvm-project] 29fd3e: [flang] Allow polymorphic actual to implicit inter...

Peter Klausler via All-commits all-commits at lists.llvm.org
Mon Nov 13 13:32:11 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 29fd3e2aa8ea09264037c278648c9033250843e0
      https://github.com/llvm/llvm-project/commit/29fd3e2aa8ea09264037c278648c9033250843e0
  Author: Peter Klausler <35819229+klausler at users.noreply.github.com>
  Date:   2023-11-13 (Mon, 13 Nov 2023)

  Changed paths:
    M flang/include/flang/Evaluate/characteristics.h
    M flang/lib/Evaluate/characteristics.cpp
    M flang/lib/Evaluate/intrinsics.cpp
    M flang/lib/Lower/CallInterface.cpp
    M flang/lib/Semantics/check-call.cpp
    M flang/test/Semantics/call13.f90
    M flang/test/Semantics/call40.f90
    R flang/test/Semantics/label18.f90#

  Log Message:
  -----------
  [flang] Allow polymorphic actual to implicit interface (#70873)

Semantics is emitting an error when an actual argument to a procedure
that has an implicit interface has a polymorphic type. This is too
general; while TYPE(*) and CLASS(*) unlimited polymorphic items require
the presence of an explicit procedure interface, CLASS(T) data can be
passed over an implicit interface to a procedure expecting a
corresponding dummy argument with TYPE(T), so long as T is not
parameterized.

(Only XLF handles this usage correctly among other Fortran compilers.)

(Making this work in the case of an actual CLASS(T) array may well
require additional changes in lowering to copy data to/from a temporary
buffer to ensure contiguity when the actual type of the array is an
extension of T.)




More information about the All-commits mailing list