diff options
author | Peter Klausler <pklausler@nvidia.com> | 2023-02-15 16:39:14 -0800 |
---|---|---|
committer | Peter Klausler <pklausler@nvidia.com> | 2023-02-16 08:30:20 -0800 |
commit | 7ed26ad10cef4d8c115a30d59352981efe7765b5 (patch) | |
tree | 80965c76008cd725fa752196930e8d40deb7611f /llvm/lib/Object/ELFObjectFile.cpp | |
parent | 1538761303ce1c06197636602644c85b8c819e04 (diff) | |
download | llvm-7ed26ad10cef4d8c115a30d59352981efe7765b5.zip llvm-7ed26ad10cef4d8c115a30d59352981efe7765b5.tar.gz llvm-7ed26ad10cef4d8c115a30d59352981efe7765b5.tar.bz2 |
[flang] Always incorporate parent types' special generic bindings
The runtime type information table generator was broken when dealing
with an extension derived type that didn't include a special generic
procedure binding for ASSIGNMENT(=) or user-defined I/O, but one of
whose ancestor types did. Ensure that the runtime derived type info
tables have complete subtables for all of these special bindings,
and respect any overrides that may have been defined.
Motivating example:
type parent
contains
procedure :: dtWrite => dtWrite1
generic :: write(formatted) => dtWrite
end type
type, extends(parent) :: extended
contains
procedure :: dtWrite => dtWrite2
end type
The runtime derived type information table for "extended" must include
a special generic procedure entry for "write(formatted)" that points
to "dtWrite2" even though "extend" has no generic procedure for
"write(formatted)".
Differential Revision: https://reviews.llvm.org/D144148
Diffstat (limited to 'llvm/lib/Object/ELFObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions