diff options
author | Daniel Chen <cdchen@ca.ibm.com> | 2024-03-26 11:29:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-26 11:29:24 -0400 |
commit | 4998587e6f5f66d464ac22ad4c11fe9afd2d56ab (patch) | |
tree | f498c9901c9012f1b435bfcb72b9972d33a770e9 /flang/lib/Lower/Bridge.cpp | |
parent | 87519a2830eab4b634a5816f53fe773929eed531 (diff) | |
download | llvm-4998587e6f5f66d464ac22ad4c11fe9afd2d56ab.zip llvm-4998587e6f5f66d464ac22ad4c11fe9afd2d56ab.tar.gz llvm-4998587e6f5f66d464ac22ad4c11fe9afd2d56ab.tar.bz2 |
[Flang] Support for passing procedure pointer, reference to a function that returns a procedure pointer to structure constructor. (#86533)
This PR fixes `not yet implemented: procedure pointer component in
structure constructor` as shown in the following test case.
```
MODULE M
TYPE :: DT
PROCEDURE(Fun), POINTER, NOPASS :: pp1
END TYPE
CONTAINS
INTEGER FUNCTION Fun(Arg)
INTEGER :: Arg
Fun = Arg
END FUNCTION
END MODULE
PROGRAM MAIN
USE M
IMPLICIT NONE
TYPE (DT) :: v2
PROCEDURE(FUN), POINTER :: pp2
v2 = DT(pp2)
v2 = DT(bar())
CONTAINS
FUNCTION BAR() RESULT(res)
PROCEDURE(FUN), POINTER :: res
END
END
```
Diffstat (limited to 'flang/lib/Lower/Bridge.cpp')
-rw-r--r-- | flang/lib/Lower/Bridge.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp index 48830dc..91b898e 100644 --- a/flang/lib/Lower/Bridge.cpp +++ b/flang/lib/Lower/Bridge.cpp @@ -3490,7 +3490,8 @@ private: if (Fortran::evaluate::UnwrapExpr<Fortran::evaluate::NullPointer>( assign.rhs)) { // rhs is null(). rhs being null(pptr) is handled in genNull. - auto boxTy{Fortran::lower::getUntypedBoxProcType(&getMLIRContext())}; + auto boxTy{ + Fortran::lower::getUntypedBoxProcType(builder->getContext())}; hlfir::Entity rhs( fir::factory::createNullBoxProc(*builder, loc, boxTy)); builder->createStoreWithConvert(loc, rhs, lhs); |