[flang] Use object before converts in fir.dispatch (#68589)
commite8cc230ef55923588fc6e361a2e9c868bda6025b
authorjeanPerier <jperier@nvidia.com>
Wed, 11 Oct 2023 12:11:59 +0000 (11 14:11 +0200)
committerGitHub <noreply@github.com>
Wed, 11 Oct 2023 12:11:59 +0000 (11 14:11 +0200)
tree7747af169231cdc709cdba2371dc3fb2ef3e45d5
parent25935c384dd83b131f3c09caaf23f7c63822cd46
[flang] Use object before converts in fir.dispatch (#68589)

In case of small interface mismatches between a function on the caller
and callee side, lowering insert converts. These are very often no-ops
at runtime (casting a descriptor to a descriptor), but they matter in
the strongly type IR.

The IR type of an object argument of a fir.dispatch must be the one of
the object, not the one of the callee side dummy, which may differ in
case of mismatches. Otherwise, the codgeneration of fir.dispatch cannot
succeed (it will not access the right binding tables).
flang/lib/Lower/ConvertCall.cpp
flang/test/Lower/HLFIR/type-bound-call-mismatch.f90 [new file with mode: 0644]
flang/test/Lower/allocatable-polymorphic.f90
flang/test/Lower/dispatch.f90
flang/test/Lower/pointer-association-polymorphic.f90