[all-commits] [llvm/llvm-project] 042c96: [flang] Fix defined I/O semantics crash & missing ...

Peter Klausler via All-commits all-commits at lists.llvm.org
Sun Jan 29 10:15:46 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 042c964d607f834d1a70763caa47492ba770c3c8
      https://github.com/llvm/llvm-project/commit/042c964d607f834d1a70763caa47492ba770c3c8
  Author: Peter Klausler <pklausler at nvidia.com>
  Date:   2023-01-29 (Sun, 29 Jan 2023)

  Changed paths:
    M flang/lib/Decimal/big-radix-floating-point.h
    M flang/lib/Evaluate/characteristics.cpp
    M flang/lib/Parser/provenance.cpp
    M flang/lib/Semantics/check-declarations.cpp
    M flang/lib/Semantics/runtime-type-info.cpp
    A flang/test/Semantics/generic05.F90
    M flang/test/Semantics/io11.f90
    M flang/test/Semantics/resolve65.f90

  Log Message:
  -----------
  [flang] Fix defined I/O semantics crash & missing errors that exposed it

Semantics crashes when emitting runtime derived type information tables
for a type that has user-defined I/O procedures declared outside the
type with explicit INTERFACE blocks (as opposed to a GENERIC binding
within the type).  This is due to the runtime table constructor
adding a table entry for each specific procedure of any explicit interface
 of the right kind (e.g., READ(UNFORMATTED)) that it found, rather than
just the ones that pertain to the derived type in question.  But
semantics also wasn't checking such interfaces for distinguishable
specific procedures, either.

Clean these up, improve the spelling of defined I/O procedure kinds
in error messages ("read(formatted)" rather than "READFORMATTED"),
and make error messages stemming from macro expansions only have
one "error:" prefix on the original message so that a new test
would work.

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




More information about the All-commits mailing list