@@ -464,7 +464,7 @@ void OrderedAssignmentRewriter::pre(hlfir::RegionAssignOp regionAssignOp) {
464
464
// if the LHS is not).
465
465
mlir::Value shape = hlfir::genShape (loc, builder, lhsEntity);
466
466
elementalLoopNest = hlfir::genLoopNest (loc, builder, shape);
467
- builder.setInsertionPointToStart (elementalLoopNest->innerLoop . getBody () );
467
+ builder.setInsertionPointToStart (elementalLoopNest->body );
468
468
lhsEntity = hlfir::getElementAt (loc, builder, lhsEntity,
469
469
elementalLoopNest->oneBasedIndices );
470
470
rhsEntity = hlfir::getElementAt (loc, builder, rhsEntity,
@@ -484,16 +484,15 @@ void OrderedAssignmentRewriter::pre(hlfir::RegionAssignOp regionAssignOp) {
484
484
for (auto &cleanupConversion : argConversionCleanups)
485
485
cleanupConversion ();
486
486
if (elementalLoopNest)
487
- builder.setInsertionPointAfter (elementalLoopNest->outerLoop );
487
+ builder.setInsertionPointAfter (elementalLoopNest->outerOp );
488
488
} else {
489
489
// TODO: preserve allocatable assignment aspects for forall once
490
490
// they are conveyed in hlfir.region_assign.
491
491
builder.create <hlfir::AssignOp>(loc, rhsEntity, lhsEntity);
492
492
}
493
493
generateCleanupIfAny (loweredLhs.elementalCleanup );
494
494
if (loweredLhs.vectorSubscriptLoopNest )
495
- builder.setInsertionPointAfter (
496
- loweredLhs.vectorSubscriptLoopNest ->outerLoop );
495
+ builder.setInsertionPointAfter (loweredLhs.vectorSubscriptLoopNest ->outerOp );
497
496
generateCleanupIfAny (oldRhsYield);
498
497
generateCleanupIfAny (loweredLhs.nonElementalCleanup );
499
498
}
@@ -518,16 +517,16 @@ void OrderedAssignmentRewriter::pre(hlfir::WhereOp whereOp) {
518
517
hlfir::Entity savedMask{maybeSaved->first };
519
518
mlir::Value shape = hlfir::genShape (loc, builder, savedMask);
520
519
whereLoopNest = hlfir::genLoopNest (loc, builder, shape);
521
- constructStack.push_back (whereLoopNest->outerLoop . getOperation () );
522
- builder.setInsertionPointToStart (whereLoopNest->innerLoop . getBody () );
520
+ constructStack.push_back (whereLoopNest->outerOp );
521
+ builder.setInsertionPointToStart (whereLoopNest->body );
523
522
mlir::Value cdt = hlfir::getElementAt (loc, builder, savedMask,
524
523
whereLoopNest->oneBasedIndices );
525
524
generateMaskIfOp (cdt);
526
525
if (maybeSaved->second ) {
527
526
// If this is the same run as the one that saved the value, the clean-up
528
527
// was left-over to be done now.
529
528
auto insertionPoint = builder.saveInsertionPoint ();
530
- builder.setInsertionPointAfter (whereLoopNest->outerLoop );
529
+ builder.setInsertionPointAfter (whereLoopNest->outerOp );
531
530
generateCleanupIfAny (maybeSaved->second );
532
531
builder.restoreInsertionPoint (insertionPoint);
533
532
}
@@ -539,8 +538,8 @@ void OrderedAssignmentRewriter::pre(hlfir::WhereOp whereOp) {
539
538
mask.generateNoneElementalPart (builder, mapper);
540
539
mlir::Value shape = mask.generateShape (builder, mapper);
541
540
whereLoopNest = hlfir::genLoopNest (loc, builder, shape);
542
- constructStack.push_back (whereLoopNest->outerLoop . getOperation () );
543
- builder.setInsertionPointToStart (whereLoopNest->innerLoop . getBody () );
541
+ constructStack.push_back (whereLoopNest->outerOp );
542
+ builder.setInsertionPointToStart (whereLoopNest->body );
544
543
mlir::Value cdt = generateMaskedEntity (mask);
545
544
generateMaskIfOp (cdt);
546
545
return ;
@@ -754,7 +753,7 @@ OrderedAssignmentRewriter::generateYieldedLHS(
754
753
loweredLhs.vectorSubscriptLoopNest = hlfir::genLoopNest (
755
754
loc, builder, loweredLhs.vectorSubscriptShape .value ());
756
755
builder.setInsertionPointToStart (
757
- loweredLhs.vectorSubscriptLoopNest ->innerLoop . getBody () );
756
+ loweredLhs.vectorSubscriptLoopNest ->body );
758
757
}
759
758
loweredLhs.lhs = temp->second .fetch (loc, builder);
760
759
return loweredLhs;
@@ -771,8 +770,7 @@ OrderedAssignmentRewriter::generateYieldedLHS(
771
770
loweredLhs.vectorSubscriptLoopNest =
772
771
hlfir::genLoopNest (loc, builder, *loweredLhs.vectorSubscriptShape ,
773
772
!elementalAddrLhs.isOrdered ());
774
- builder.setInsertionPointToStart (
775
- loweredLhs.vectorSubscriptLoopNest ->innerLoop .getBody ());
773
+ builder.setInsertionPointToStart (loweredLhs.vectorSubscriptLoopNest ->body );
776
774
mapper.map (elementalAddrLhs.getIndices (),
777
775
loweredLhs.vectorSubscriptLoopNest ->oneBasedIndices );
778
776
for (auto &op : elementalAddrLhs.getBody ().front ().without_terminator ())
@@ -798,11 +796,11 @@ OrderedAssignmentRewriter::generateMaskedEntity(MaskedArrayExpr &maskedExpr) {
798
796
if (!maskedExpr.noneElementalPartWasGenerated ) {
799
797
// Generate none elemental part before the where loops (but inside the
800
798
// current forall loops if any).
801
- builder.setInsertionPoint (whereLoopNest->outerLoop );
799
+ builder.setInsertionPoint (whereLoopNest->outerOp );
802
800
maskedExpr.generateNoneElementalPart (builder, mapper);
803
801
}
804
802
// Generate the none elemental part cleanup after the where loops.
805
- builder.setInsertionPointAfter (whereLoopNest->outerLoop );
803
+ builder.setInsertionPointAfter (whereLoopNest->outerOp );
806
804
maskedExpr.generateNoneElementalCleanupIfAny (builder, mapper);
807
805
// Generate the value of the current element for the masked expression
808
806
// at the current insertion point (inside the where loops, and any fir.if
@@ -1242,7 +1240,7 @@ void OrderedAssignmentRewriter::saveLeftHandSide(
1242
1240
LhsValueAndCleanUp loweredLhs = generateYieldedLHS (loc, region);
1243
1241
fir::factory::TemporaryStorage *temp = nullptr ;
1244
1242
if (loweredLhs.vectorSubscriptLoopNest )
1245
- constructStack.push_back (loweredLhs.vectorSubscriptLoopNest ->outerLoop );
1243
+ constructStack.push_back (loweredLhs.vectorSubscriptLoopNest ->outerOp );
1246
1244
if (loweredLhs.vectorSubscriptLoopNest && !rhsIsArray (regionAssignOp)) {
1247
1245
// Vector subscripted entity for which the shape must also be saved on top
1248
1246
// of the element addresses (e.g. the shape may change in each forall
@@ -1265,7 +1263,7 @@ void OrderedAssignmentRewriter::saveLeftHandSide(
1265
1263
// subscripted LHS.
1266
1264
auto &vectorTmp = temp->cast <fir::factory::AnyVectorSubscriptStack>();
1267
1265
auto insertionPoint = builder.saveInsertionPoint ();
1268
- builder.setInsertionPoint (loweredLhs.vectorSubscriptLoopNest ->outerLoop );
1266
+ builder.setInsertionPoint (loweredLhs.vectorSubscriptLoopNest ->outerOp );
1269
1267
vectorTmp.pushShape (loc, builder, shape);
1270
1268
builder.restoreInsertionPoint (insertionPoint);
1271
1269
} else {
@@ -1290,8 +1288,7 @@ void OrderedAssignmentRewriter::saveLeftHandSide(
1290
1288
generateCleanupIfAny (loweredLhs.elementalCleanup );
1291
1289
if (loweredLhs.vectorSubscriptLoopNest ) {
1292
1290
constructStack.pop_back ();
1293
- builder.setInsertionPointAfter (
1294
- loweredLhs.vectorSubscriptLoopNest ->outerLoop );
1291
+ builder.setInsertionPointAfter (loweredLhs.vectorSubscriptLoopNest ->outerOp );
1295
1292
}
1296
1293
}
1297
1294
0 commit comments