[all-commits] [llvm/llvm-project] 7cf160: [flang] Rework handling of non-type-bound user-def...

Peter Klausler via All-commits all-commits at lists.llvm.org
Thu Apr 13 15:35:44 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7cf1608b4d8f7f4d20c994dd13451efb7c9560b5
      https://github.com/llvm/llvm-project/commit/7cf1608b4d8f7f4d20c994dd13451efb7c9560b5
  Author: Peter Klausler <pklausler at nvidia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M flang/include/flang/Common/Fortran.h
    M flang/include/flang/Runtime/io-api.h
    M flang/include/flang/Semantics/runtime-type-info.h
    M flang/include/flang/Semantics/symbol.h
    M flang/include/flang/Semantics/tools.h
    M flang/lib/Common/Fortran.cpp
    M flang/lib/Semantics/check-declarations.cpp
    M flang/lib/Semantics/check-io.cpp
    M flang/lib/Semantics/check-io.h
    M flang/lib/Semantics/resolve-names-utils.cpp
    M flang/lib/Semantics/runtime-type-info.cpp
    M flang/lib/Semantics/symbol.cpp
    M flang/lib/Semantics/tools.cpp
    M flang/module/__fortran_type_info.f90
    M flang/runtime/CMakeLists.txt
    M flang/runtime/descriptor-io.cpp
    M flang/runtime/descriptor-io.h
    M flang/runtime/format-implementation.h
    M flang/runtime/format.h
    M flang/runtime/io-api.cpp
    M flang/runtime/namelist.cpp
    M flang/runtime/namelist.h
    A flang/runtime/non-tbp-dio.cpp
    A flang/runtime/non-tbp-dio.h
    M flang/runtime/type-info.h
    M flang/runtime/unit.h
    M flang/test/Semantics/typeinfo01.f90
    M flang/test/Semantics/typeinfo02.f90

  Log Message:
  -----------
  [flang] Rework handling of non-type-bound user-defined I/O

A fairly recent introduction of runtime I/O APIs called OutputDerivedType()
and InputDerivedType() didn't cover NAMELIST I/O's need to access
non-type-bound generic interfaces for user-defined derived type I/O
when those generic interfaces are defined in some scope other than the
one that defines the derived type.

The patch adds a new data structure shared between lowering
and the runtime that can represent all of the cases that can
arise with non-type-bound defined I/O.  It can represent
scopes in which non-type-bound defined I/O generic interfaces
are inaccessible, too, due to IMPORT statements.

The data structure is now an operand to OutputDerivedType() and
InputDerivedType() as well as a data member in the NamelistGroup
structure.

Differential Revision: https://reviews.llvm.org/D148257




More information about the All-commits mailing list