aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Lower/Bridge.cpp
diff options
context:
space:
mode:
authorDaniel Chen <cdchen@ca.ibm.com>2024-03-26 11:29:24 -0400
committerGitHub <noreply@github.com>2024-03-26 11:29:24 -0400
commit4998587e6f5f66d464ac22ad4c11fe9afd2d56ab (patch)
treef498c9901c9012f1b435bfcb72b9972d33a770e9 /flang/lib/Lower/Bridge.cpp
parent87519a2830eab4b634a5816f53fe773929eed531 (diff)
downloadllvm-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.cpp3
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);