@@ -119,29 +119,30 @@ struct IterWhileConversion : public OpRewritePattern<fir::IterWhileOp> {
119119 &scfWhileOp.getBefore (), scfWhileOp.getBefore ().end (), loopTypes,
120120 SmallVector<Location>(loopTypes.size (), loc));
121121
122- auto beforeArgs = scfWhileOp.getBefore ().getArguments ();
123- auto beforeIv = beforeArgs[0 ];
124- auto beforeOk = beforeArgs[1 ];
122+ Region::BlockArgListType argsInBefore =
123+ scfWhileOp.getBefore ().getArguments ();
124+ auto ivInBefore = argsInBefore[0 ];
125+ auto earlyExitInBefore = argsInBefore[1 ];
125126
126127 rewriter.setInsertionPointToStart (&beforeBlock);
127128
128129 Value inductionCmp = mlir::arith::CmpIOp::create (
129- rewriter, loc, mlir::arith::CmpIPredicate::sle, beforeIv , upperBound);
130- Value cond =
131- mlir::arith::AndIOp::create (rewriter, loc, inductionCmp, beforeOk );
130+ rewriter, loc, mlir::arith::CmpIPredicate::sle, ivInBefore , upperBound);
131+ Value cond = mlir::arith::AndIOp::create (rewriter, loc, inductionCmp,
132+ earlyExitInBefore );
132133
133- mlir::scf::ConditionOp::create (rewriter, loc, cond, beforeArgs );
134+ mlir::scf::ConditionOp::create (rewriter, loc, cond, argsInBefore );
134135
135136 rewriter.moveBlockBefore (iterWhileOp.getBody (), &scfWhileOp.getAfter (),
136137 scfWhileOp.getAfter ().begin ());
137138
138- auto afterBody = scfWhileOp.getAfterBody ();
139+ auto * afterBody = scfWhileOp.getAfterBody ();
139140 auto resultOp = cast<fir::ResultOp>(afterBody->getTerminator ());
140141 SmallVector<Value> results (resultOp->getOperands ());
141- Value afterIv = scfWhileOp.getAfterArguments ()[0 ];
142+ Value ivInAfter = scfWhileOp.getAfterArguments ()[0 ];
142143
143144 rewriter.setInsertionPointToStart (afterBody);
144- results[0 ] = mlir::arith::AddIOp::create (rewriter, loc, afterIv , step);
145+ results[0 ] = mlir::arith::AddIOp::create (rewriter, loc, ivInAfter , step);
145146
146147 rewriter.setInsertionPointToEnd (afterBody);
147148 rewriter.replaceOpWithNewOp <scf::YieldOp>(resultOp, results);
0 commit comments