Lines Matching defs:LoopHelper
14154 OMPLoopBasedDirective::HelperExprs &LoopHelper,
14179 if (auto *PI = cast_or_null<DeclStmt>(LoopHelper.PreInits)) {
14185 for (Expr *CounterRef : LoopHelper.Counters) {
14259 OMPLoopBasedDirective::HelperExprs &LoopHelper = LoopHelpers[I];
14261 assert(LoopHelper.Counters.size() == 1 &&
14263 auto *OrigCntVar = cast<DeclRefExpr>(LoopHelper.Counters.front());
14265 DeclRefExpr *IterVarRef = cast<DeclRefExpr>(LoopHelper.IterationVarRef);
14291 addLoopPreInits(Context, LoopHelper, LoopStmts[I], OriginalInits[I],
14338 OMPLoopBasedDirective::HelperExprs &LoopHelper = LoopHelpers[I];
14339 Expr *NumIterations = LoopHelper.NumIterations;
14340 auto *OrigCntVar = cast<DeclRefExpr>(LoopHelper.Counters[0]);
14372 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_Add,
14377 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LT,
14382 LoopHelper.Cond->getBeginLoc(), LoopHelper.Cond->getEndLoc(),
14387 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LT,
14394 CurScope, LoopHelper.Inc->getExprLoc(), UO_PreInc, MakeTileIVRef());
14415 BodyParts.append(LoopHelper.Updates.begin(), LoopHelper.Updates.end());
14423 IncrStmt.get(), Inner, LoopHelper.Init->getBeginLoc(),
14424 LoopHelper.Init->getBeginLoc(), LoopHelper.Inc->getEndLoc());
14429 auto &LoopHelper = LoopHelpers[I];
14430 Expr *NumIterations = LoopHelper.NumIterations;
14431 DeclRefExpr *OrigCntVar = cast<DeclRefExpr>(LoopHelper.Counters[0]);
14446 SemaRef.ActOnIntegerConstant(LoopHelper.Init->getExprLoc(), 0).get(),
14457 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LT,
14464 SemaRef.BuildBinOp(CurScope, LoopHelper.Inc->getExprLoc(), BO_AddAssign,
14471 IncrStmt.get(), Inner, LoopHelper.Init->getBeginLoc(),
14472 LoopHelper.Init->getBeginLoc(), LoopHelper.Inc->getEndLoc());
14521 OMPLoopBasedDirective::HelperExprs &LoopHelper = LoopHelpers.front();
14525 LoopHelper.NumIterations, OMPC_full, /*StrictlyPositive=*/false,
14547 // directives applied: \code OriginalInits; LoopHelper.PreInits;
14548 // LoopHelper.Counters;
14549 // for (; IV < LoopHelper.NumIterations; ++IV) {
14550 // LoopHelper.Updates;
14554 // where IV is a variable declared and initialized to 0 in LoopHelper.PreInits
14555 // and referenced by LoopHelper.IterationVarRef.
14560 // LoopHelper.PreInits; > NewPreInits
14561 // LoopHelper.Counters; /
14562 // for (auto UIV = 0; UIV < LoopHelper.NumIterations; UIV+=Factor) {
14564 // for (IV = UIV; IV < UIV + Factor && UIV < LoopHelper.NumIterations; ++IV)
14566 // LoopHelper.Updates;
14572 // as the original LoopHelper.IterationVarRef because LoopHelper.Updates
14590 addLoopPreInits(Context, LoopHelper, LoopStmt, OriginalInits[0], PreInits);
14592 auto *IterationVarRef = cast<DeclRefExpr>(LoopHelper.IterationVarRef);
14594 assert(LoopHelper.Counters.size() == 1 &&
14596 auto *OrigVar = cast<DeclRefExpr>(LoopHelper.Counters.front());
14645 auto MakeNumIterations = [&CopyTransformer, &LoopHelper]() -> Expr * {
14647 CopyTransformer.TransformExpr(LoopHelper.NumIterations));
14667 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_Add,
14672 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LT,
14677 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LT,
14682 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LAnd,
14689 CurScope, LoopHelper.Inc->getExprLoc(), UO_PreInc, MakeInnerRef());
14695 InnerBodyStmts.append(LoopHelper.Updates.begin(), LoopHelper.Updates.end());
14704 InnerIncr.get(), InnerBody, LoopHelper.Init->getBeginLoc(),
14705 LoopHelper.Init->getBeginLoc(), LoopHelper.Inc->getEndLoc());
14728 SemaRef.ActOnIntegerConstant(LoopHelper.Init->getExprLoc(), 0).get(),
14737 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LT,
14744 SemaRef.BuildBinOp(CurScope, LoopHelper.Inc->getExprLoc(), BO_AddAssign,
14752 OuterIncr.get(), InnerUnrolled, LoopHelper.Init->getBeginLoc(),
14753 LoopHelper.Init->getBeginLoc(), LoopHelper.Inc->getEndLoc());
14789 OMPLoopBasedDirective::HelperExprs &LoopHelper = LoopHelpers.front();
14797 addLoopPreInits(Context, LoopHelper, LoopStmt, OriginalInits[0], PreInits);
14799 auto *IterationVarRef = cast<DeclRefExpr>(LoopHelper.IterationVarRef);
14802 auto *OrigVar = cast<DeclRefExpr>(LoopHelper.Counters.front());
14821 // LoopHelper.Updates will read the logical iteration number from
14822 // LoopHelper.IterationVarRef, compute the value of the user loop counter of
14824 // variable. We cannot directly use LoopHelper.IterationVarRef as the
14839 // number of the reversed loop, then let LoopHelper.Updates compute the user's
14844 // i = (.reversed.iv + 0) * 1; // LoopHelper.Updates
14853 auto MakeNumIterations = [&CopyTransformer, &LoopHelper]() -> Expr * {
14855 CopyTransformer.TransformExpr(LoopHelper.NumIterations));
14889 SemaRef.BuildBinOp(CurScope, LoopHelper.Cond->getExprLoc(), BO_LT,
14898 ExprResult Incr = SemaRef.BuildUnaryOp(CurScope, LoopHelper.Inc->getExprLoc(),
14926 BodyStmts.reserve(LoopHelper.Updates.size() + 2 +
14929 llvm::append_range(BodyStmts, LoopHelper.Updates);
14940 ReversedBody, LoopHelper.Init->getBeginLoc(),
14941 LoopHelper.Init->getBeginLoc(), LoopHelper.Inc->getEndLoc());
15036 OMPLoopBasedDirective::HelperExprs &LoopHelper = LoopHelpers[I];
15038 assert(LoopHelper.Counters.size() == 1 &&
15040 auto *OrigCntVar = cast<DeclRefExpr>(LoopHelper.Counters.front());
15043 addLoopPreInits(Context, LoopHelper, LoopStmts[I], OriginalInits[I],