• Home
  • Raw
  • Download

Lines Matching refs:CGF

30   void emitPreInitStmt(CodeGenFunction &CGF, const OMPExecutableDirective &S) {  in emitPreInitStmt()  argument
36 CGF.EmitVarDecl(cast<VarDecl>(*I)); in emitPreInitStmt()
39 CGF.EmitAutoVarAlloca(cast<VarDecl>(*I)); in emitPreInitStmt()
40 CGF.EmitAutoVarCleanups(Emission); in emitPreInitStmt()
49 static bool isCapturedVar(CodeGenFunction &CGF, const VarDecl *VD) { in isCapturedVar() argument
50 return CGF.LambdaCaptureFields.lookup(VD) || in isCapturedVar()
51 (CGF.CapturedStmtInfo && CGF.CapturedStmtInfo->lookup(VD)) || in isCapturedVar()
52 (CGF.CurCodeDecl && isa<BlockDecl>(CGF.CurCodeDecl)); in isCapturedVar()
56 OMPLexicalScope(CodeGenFunction &CGF, const OMPExecutableDirective &S, in OMPLexicalScope() argument
58 : CodeGenFunction::LexicalScope(CGF, S.getSourceRange()), in OMPLexicalScope()
59 InlinedShareds(CGF) { in OMPLexicalScope()
60 emitPreInitStmt(CGF, S); in OMPLexicalScope()
68 isCapturedVar(CGF, VD) || in OMPLexicalScope()
69 (CGF.CapturedStmtInfo && in OMPLexicalScope()
73 InlinedShareds.addPrivate(VD, [&CGF, &DRE]() -> Address { in OMPLexicalScope()
74 return CGF.EmitLValue(&DRE).getAddress(); in OMPLexicalScope()
87 void emitPreInitStmt(CodeGenFunction &CGF, const OMPLoopDirective &S) { in emitPreInitStmt() argument
91 CGF.EmitVarDecl(cast<VarDecl>(*I)); in emitPreInitStmt()
97 OMPLoopScope(CodeGenFunction &CGF, const OMPLoopDirective &S) in OMPLoopScope() argument
98 : CodeGenFunction::RunCleanupsScope(CGF) { in OMPLoopScope()
99 emitPreInitStmt(CGF, S); in OMPLoopScope()
172 static Address castValueFromUintptr(CodeGenFunction &CGF, QualType DstType, in castValueFromUintptr() argument
175 ASTContext &Ctx = CGF.getContext(); in castValueFromUintptr()
177 auto *CastedPtr = CGF.EmitScalarConversion( in castValueFromUintptr()
181 CGF.MakeNaturalAlignAddrLValue(CastedPtr, Ctx.getPointerType(DstType)) in castValueFromUintptr()
189 TmpAddr = CGF.CreateMemTemp(RefType, Twine(Name) + ".ref"); in castValueFromUintptr()
190 auto TmpLVal = CGF.MakeAddrLValue(TmpAddr, RefType); in castValueFromUintptr()
191 CGF.EmitScalarInit(RefVal, TmpLVal); in castValueFromUintptr()
397 static void emitInitWithReductionInitializer(CodeGenFunction &CGF, in emitInitWithReductionInitializer() argument
404 CGF.CGM.getOpenMPRuntime().getUserDefinedReduction(DRD); in emitInitWithReductionInitializer()
411 CodeGenFunction::OMPPrivateScope PrivateScope(CGF); in emitInitWithReductionInitializer()
418 CodeGenFunction::OpaqueValueMapping Map(CGF, OVE, Func); in emitInitWithReductionInitializer()
419 CGF.EmitIgnoredExpr(InitOp); in emitInitWithReductionInitializer()
421 llvm::Constant *Init = CGF.CGM.EmitNullConstant(Ty); in emitInitWithReductionInitializer()
423 CGF.CGM.getModule(), Init->getType(), /*isConstant=*/true, in emitInitWithReductionInitializer()
425 LValue LV = CGF.MakeNaturalAlignAddrLValue(GV, Ty); in emitInitWithReductionInitializer()
427 switch (CGF.getEvaluationKind(Ty)) { in emitInitWithReductionInitializer()
429 InitRVal = CGF.EmitLoadOfLValue(LV, SourceLocation()); in emitInitWithReductionInitializer()
433 RValue::getComplex(CGF.EmitLoadOfComplex(LV, SourceLocation())); in emitInitWithReductionInitializer()
440 CodeGenFunction::OpaqueValueMapping OpaqueMap(CGF, &OVE, InitRVal); in emitInitWithReductionInitializer()
441 CGF.EmitAnyExprToMem(&OVE, Private, Ty.getQualifiers(), in emitInitWithReductionInitializer()
451 static void EmitOMPAggregateInit(CodeGenFunction &CGF, Address DestAddr, in EmitOMPAggregateInit() argument
460 auto NumElements = CGF.emitArrayLength(ArrayTy, ElementTy, DestAddr); in EmitOMPAggregateInit()
462 CGF.Builder.CreateElementBitCast(DestAddr, DestAddr.getElementType()); in EmitOMPAggregateInit()
465 CGF.Builder.CreateElementBitCast(SrcAddr, DestAddr.getElementType()); in EmitOMPAggregateInit()
472 auto DestEnd = CGF.Builder.CreateGEP(DestBegin, NumElements); in EmitOMPAggregateInit()
474 auto BodyBB = CGF.createBasicBlock("omp.arrayinit.body"); in EmitOMPAggregateInit()
475 auto DoneBB = CGF.createBasicBlock("omp.arrayinit.done"); in EmitOMPAggregateInit()
477 CGF.Builder.CreateICmpEQ(DestBegin, DestEnd, "omp.arrayinit.isempty"); in EmitOMPAggregateInit()
478 CGF.Builder.CreateCondBr(IsEmpty, DoneBB, BodyBB); in EmitOMPAggregateInit()
481 auto EntryBB = CGF.Builder.GetInsertBlock(); in EmitOMPAggregateInit()
482 CGF.EmitBlock(BodyBB); in EmitOMPAggregateInit()
484 CharUnits ElementSize = CGF.getContext().getTypeSizeInChars(ElementTy); in EmitOMPAggregateInit()
489 SrcElementPHI = CGF.Builder.CreatePHI(SrcBegin->getType(), 2, in EmitOMPAggregateInit()
496 llvm::PHINode *DestElementPHI = CGF.Builder.CreatePHI( in EmitOMPAggregateInit()
505 CodeGenFunction::RunCleanupsScope InitScope(CGF); in EmitOMPAggregateInit()
507 emitInitWithReductionInitializer(CGF, DRD, Init, DestElementCurrent, in EmitOMPAggregateInit()
510 CGF.EmitAnyExprToMem(Init, DestElementCurrent, ElementTy.getQualifiers(), in EmitOMPAggregateInit()
516 auto SrcElementNext = CGF.Builder.CreateConstGEP1_32( in EmitOMPAggregateInit()
518 SrcElementPHI->addIncoming(SrcElementNext, CGF.Builder.GetInsertBlock()); in EmitOMPAggregateInit()
522 auto DestElementNext = CGF.Builder.CreateConstGEP1_32( in EmitOMPAggregateInit()
526 CGF.Builder.CreateICmpEQ(DestElementNext, DestEnd, "omp.arraycpy.done"); in EmitOMPAggregateInit()
527 CGF.Builder.CreateCondBr(Done, DoneBB, BodyBB); in EmitOMPAggregateInit()
528 DestElementPHI->addIncoming(DestElementNext, CGF.Builder.GetInsertBlock()); in EmitOMPAggregateInit()
531 CGF.EmitBlock(DoneBB, /*IsFinished=*/true); in EmitOMPAggregateInit()
886 static Address castToBase(CodeGenFunction &CGF, QualType BaseTy, QualType ElTy, in castToBase() argument
893 !CGF.getContext().hasSameType(BaseTy, ElTy)) { in castToBase()
894 Tmp = CGF.CreateMemTemp(BaseTy); in castToBase()
896 CGF.Builder.CreateStore(Tmp.getPointer(), TopTmp); in castToBase()
905 Addr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(Addr, Ty); in castToBase()
907 CGF.Builder.CreateStore(Addr, Tmp); in castToBase()
913 static LValue loadToBegin(CodeGenFunction &CGF, QualType BaseTy, QualType ElTy, in loadToBegin() argument
917 !CGF.getContext().hasSameType(BaseTy, ElTy)) { in loadToBegin()
919 BaseLV = CGF.EmitLoadOfPointerLValue(BaseLV.getAddress(), PtrTy); in loadToBegin()
921 BaseLV = CGF.EmitLoadOfReferenceLValue(BaseLV.getAddress(), in loadToBegin()
926 return CGF.MakeAddrLValue( in loadToBegin()
928 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in loadToBegin()
929 BaseLV.getPointer(), CGF.ConvertTypeForMem(ElTy)->getPointerTo()), in loadToBegin()
1166 CodeGenFunction &CGF, const OMPExecutableDirective &D, in emitPostUpdateForReductionClause() argument
1168 if (!CGF.HaveInsertPoint()) in emitPostUpdateForReductionClause()
1174 if (auto *Cond = CondGen(CGF)) { in emitPostUpdateForReductionClause()
1177 auto *ThenBB = CGF.createBasicBlock(".omp.reduction.pu"); in emitPostUpdateForReductionClause()
1178 DoneBB = CGF.createBasicBlock(".omp.reduction.pu.done"); in emitPostUpdateForReductionClause()
1179 CGF.Builder.CreateCondBr(Cond, ThenBB, DoneBB); in emitPostUpdateForReductionClause()
1180 CGF.EmitBlock(ThenBB); in emitPostUpdateForReductionClause()
1183 CGF.EmitIgnoredExpr(PostUpdate); in emitPostUpdateForReductionClause()
1187 CGF.EmitBlock(DoneBB, /*IsFinished=*/true); in emitPostUpdateForReductionClause()
1190 static void emitCommonOMPParallelDirective(CodeGenFunction &CGF, in emitCommonOMPParallelDirective() argument
1195 auto OutlinedFn = CGF.CGM.getOpenMPRuntime(). in emitCommonOMPParallelDirective()
1199 CodeGenFunction::RunCleanupsScope NumThreadsScope(CGF); in emitCommonOMPParallelDirective()
1200 auto NumThreads = CGF.EmitScalarExpr(NumThreadsClause->getNumThreads(), in emitCommonOMPParallelDirective()
1202 CGF.CGM.getOpenMPRuntime().emitNumThreadsClause( in emitCommonOMPParallelDirective()
1203 CGF, NumThreads, NumThreadsClause->getLocStart()); in emitCommonOMPParallelDirective()
1206 CodeGenFunction::RunCleanupsScope ProcBindScope(CGF); in emitCommonOMPParallelDirective()
1207 CGF.CGM.getOpenMPRuntime().emitProcBindClause( in emitCommonOMPParallelDirective()
1208 CGF, ProcBindClause->getProcBindKind(), ProcBindClause->getLocStart()); in emitCommonOMPParallelDirective()
1219 OMPLexicalScope Scope(CGF, S); in emitCommonOMPParallelDirective()
1221 CGF.GenerateOpenMPCapturedVars(*CS, CapturedVars); in emitCommonOMPParallelDirective()
1222 CGF.CGM.getOpenMPRuntime().emitParallelCall(CGF, S.getLocStart(), OutlinedFn, in emitCommonOMPParallelDirective()
1228 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPParallelDirective() argument
1229 OMPPrivateScope PrivateScope(CGF); in EmitOMPParallelDirective()
1230 bool Copyins = CGF.EmitOMPCopyinClause(S); in EmitOMPParallelDirective()
1231 (void)CGF.EmitOMPFirstprivateClause(S, PrivateScope); in EmitOMPParallelDirective()
1236 CGF.CGM.getOpenMPRuntime().emitBarrierCall( in EmitOMPParallelDirective()
1237 CGF, S.getLocStart(), OMPD_unknown, /*EmitChecks=*/false, in EmitOMPParallelDirective()
1240 CGF.EmitOMPPrivateClause(S, PrivateScope); in EmitOMPParallelDirective()
1241 CGF.EmitOMPReductionClauseInit(S, PrivateScope); in EmitOMPParallelDirective()
1243 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPParallelDirective()
1244 CGF.EmitOMPReductionClauseFinal(S); in EmitOMPParallelDirective()
1391 static void emitAlignedClause(CodeGenFunction &CGF, in emitAlignedClause() argument
1393 if (!CGF.HaveInsertPoint()) in emitAlignedClause()
1399 cast<llvm::ConstantInt>(CGF.EmitScalarExpr(AlignmentExpr)); in emitAlignedClause()
1409 CGF.getContext() in emitAlignedClause()
1410 .toCharUnitsFromBits(CGF.getContext().getOpenMPDefaultSimdAlign( in emitAlignedClause()
1417 llvm::Value *PtrValue = CGF.EmitScalarExpr(E); in emitAlignedClause()
1418 CGF.EmitAlignmentAssumption(PtrValue, Alignment); in emitAlignedClause()
1456 static void emitPreCond(CodeGenFunction &CGF, const OMPLoopDirective &S, in emitPreCond() argument
1459 if (!CGF.HaveInsertPoint()) in emitPreCond()
1462 CodeGenFunction::OMPPrivateScope PreCondScope(CGF); in emitPreCond()
1463 CGF.EmitOMPPrivateLoopCounters(S, PreCondScope); in emitPreCond()
1467 CGF.EmitIgnoredExpr(I); in emitPreCond()
1471 CGF.EmitBranchOnBoolExpr(Cond, TrueBlock, FalseBlock, TrueCount); in emitPreCond()
1508 static void emitSimdlenSafelenClause(CodeGenFunction &CGF, in emitSimdlenSafelenClause() argument
1511 if (!CGF.HaveInsertPoint()) in emitSimdlenSafelenClause()
1514 RValue Len = CGF.EmitAnyExpr(C->getSimdlen(), AggValueSlot::ignored(), in emitSimdlenSafelenClause()
1517 CGF.LoopStack.setVectorizeWidth(Val->getZExtValue()); in emitSimdlenSafelenClause()
1522 CGF.LoopStack.setParallel(!D.getSingleClause<OMPSafelenClause>()); in emitSimdlenSafelenClause()
1524 RValue Len = CGF.EmitAnyExpr(C->getSafelen(), AggValueSlot::ignored(), in emitSimdlenSafelenClause()
1527 CGF.LoopStack.setVectorizeWidth(Val->getZExtValue()); in emitSimdlenSafelenClause()
1531 CGF.LoopStack.setParallel(false); in emitSimdlenSafelenClause()
1590 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPSimdDirective() argument
1591 OMPLoopScope PreInitScope(CGF, S); in EmitOMPSimdDirective()
1603 if (CGF.ConstantFoldsToSimpleInteger(S.getPreCond(), CondConstant)) { in EmitOMPSimdDirective()
1607 auto *ThenBlock = CGF.createBasicBlock("simd.if.then"); in EmitOMPSimdDirective()
1608 ContBlock = CGF.createBasicBlock("simd.if.end"); in EmitOMPSimdDirective()
1609 emitPreCond(CGF, S, S.getPreCond(), ThenBlock, ContBlock, in EmitOMPSimdDirective()
1610 CGF.getProfileCount(&S)); in EmitOMPSimdDirective()
1611 CGF.EmitBlock(ThenBlock); in EmitOMPSimdDirective()
1612 CGF.incrementProfileCounter(&S); in EmitOMPSimdDirective()
1618 CGF.EmitVarDecl(*IVDecl); in EmitOMPSimdDirective()
1619 CGF.EmitIgnoredExpr(S.getInit()); in EmitOMPSimdDirective()
1625 CGF.EmitVarDecl(*cast<VarDecl>(LIExpr->getDecl())); in EmitOMPSimdDirective()
1627 CGF.EmitIgnoredExpr(S.getCalcLastIteration()); in EmitOMPSimdDirective()
1630 CGF.EmitOMPSimdInit(S); in EmitOMPSimdDirective()
1632 emitAlignedClause(CGF, S); in EmitOMPSimdDirective()
1633 CGF.EmitOMPLinearClauseInit(S); in EmitOMPSimdDirective()
1635 OMPPrivateScope LoopScope(CGF); in EmitOMPSimdDirective()
1636 CGF.EmitOMPPrivateLoopCounters(S, LoopScope); in EmitOMPSimdDirective()
1637 CGF.EmitOMPLinearClause(S, LoopScope); in EmitOMPSimdDirective()
1638 CGF.EmitOMPPrivateClause(S, LoopScope); in EmitOMPSimdDirective()
1639 CGF.EmitOMPReductionClauseInit(S, LoopScope); in EmitOMPSimdDirective()
1641 CGF.EmitOMPLastprivateClauseInit(S, LoopScope); in EmitOMPSimdDirective()
1643 CGF.EmitOMPInnerLoop(S, LoopScope.requiresCleanups(), S.getCond(), in EmitOMPSimdDirective()
1645 [&S](CodeGenFunction &CGF) { in EmitOMPSimdDirective() argument
1646 CGF.EmitOMPLoopBody(S, JumpDest()); in EmitOMPSimdDirective()
1647 CGF.EmitStopPoint(&S); in EmitOMPSimdDirective()
1650 CGF.EmitOMPSimdFinal( in EmitOMPSimdDirective()
1654 CGF.EmitOMPLastprivateClauseFinal(S, /*NoFinals=*/true); in EmitOMPSimdDirective()
1655 CGF.EmitOMPReductionClauseFinal(S); in EmitOMPSimdDirective()
1657 CGF, S, [](CodeGenFunction &) -> llvm::Value * { return nullptr; }); in EmitOMPSimdDirective()
1659 CGF.EmitOMPLinearClauseFinal( in EmitOMPSimdDirective()
1663 CGF.EmitBranch(ContBlock); in EmitOMPSimdDirective()
1664 CGF.EmitBlock(ContBlock, true); in EmitOMPSimdDirective()
1732 [&S, LoopExit](CodeGenFunction &CGF) { in EmitOMPOuterLoop() argument
1733 CGF.EmitOMPLoopBody(S, LoopExit); in EmitOMPOuterLoop()
1734 CGF.EmitStopPoint(&S); in EmitOMPOuterLoop()
1736 [Ordered, IVSize, IVSigned, Loc](CodeGenFunction &CGF) { in EmitOMPOuterLoop() argument
1738 CGF.CGM.getOpenMPRuntime().emitForOrderedIterationEnd( in EmitOMPOuterLoop()
1739 CGF, Loc, IVSize, IVSigned); in EmitOMPOuterLoop()
1873 [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPDistributeParallelForDirective() argument
1874 OMPLoopScope PreInitScope(CGF, S); in EmitOMPDistributeParallelForDirective()
1875 CGF.EmitStmt( in EmitOMPDistributeParallelForDirective()
1885 [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPDistributeParallelForSimdDirective() argument
1886 OMPLoopScope PreInitScope(CGF, S); in EmitOMPDistributeParallelForSimdDirective()
1887 CGF.EmitStmt( in EmitOMPDistributeParallelForSimdDirective()
1897 [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPDistributeSimdDirective() argument
1898 OMPLoopScope PreInitScope(CGF, S); in EmitOMPDistributeSimdDirective()
1899 CGF.EmitStmt( in EmitOMPDistributeSimdDirective()
1909 [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPTargetParallelForSimdDirective() argument
1910 OMPLoopScope PreInitScope(CGF, S); in EmitOMPTargetParallelForSimdDirective()
1911 CGF.EmitStmt( in EmitOMPTargetParallelForSimdDirective()
1917 static LValue EmitOMPHelperVar(CodeGenFunction &CGF, in EmitOMPHelperVar() argument
1920 CGF.EmitVarDecl(*VDecl); in EmitOMPHelperVar()
1921 return CGF.EmitLValue(Helper); in EmitOMPHelperVar()
2056 [&S, LoopExit](CodeGenFunction &CGF) { in EmitOMPWorksharingLoop() argument
2057 CGF.EmitOMPLoopBody(S, LoopExit); in EmitOMPWorksharingLoop()
2058 CGF.EmitStopPoint(&S); in EmitOMPWorksharingLoop()
2078 [&](CodeGenFunction &CGF) -> llvm::Value * { in EmitOMPWorksharingLoop() argument
2079 return CGF.Builder.CreateIsNotNull( in EmitOMPWorksharingLoop()
2080 CGF.EmitLoadOfScalar(IL, S.getLocStart())); in EmitOMPWorksharingLoop()
2086 *this, S, [&](CodeGenFunction &CGF) -> llvm::Value * { in EmitOMPWorksharingLoop() argument
2087 return CGF.Builder.CreateIsNotNull( in EmitOMPWorksharingLoop()
2088 CGF.EmitLoadOfScalar(IL, S.getLocStart())); in EmitOMPWorksharingLoop()
2096 EmitOMPLinearClauseFinal(S, [&](CodeGenFunction &CGF) -> llvm::Value * { in EmitOMPWorksharingLoop() argument
2097 return CGF.Builder.CreateIsNotNull( in EmitOMPWorksharingLoop()
2098 CGF.EmitLoadOfScalar(IL, S.getLocStart())); in EmitOMPWorksharingLoop()
2111 auto &&CodeGen = [&S, &HasLastprivates](CodeGenFunction &CGF, in EmitOMPForDirective()
2113 HasLastprivates = CGF.EmitOMPWorksharingLoop(S); in EmitOMPForDirective()
2129 auto &&CodeGen = [&S, &HasLastprivates](CodeGenFunction &CGF, in EmitOMPForSimdDirective() argument
2131 HasLastprivates = CGF.EmitOMPWorksharingLoop(S); in EmitOMPForSimdDirective()
2144 static LValue createSectionLVal(CodeGenFunction &CGF, QualType Ty, in createSectionLVal() argument
2147 auto LVal = CGF.MakeAddrLValue(CGF.CreateMemTemp(Ty, Name), Ty); in createSectionLVal()
2149 CGF.EmitScalarInit(Init, LVal); in createSectionLVal()
2157 auto &&CodeGen = [&S, Stmt, CS, &HasLastprivates](CodeGenFunction &CGF, in EmitSections()
2159 auto &C = CGF.CGM.getContext(); in EmitSections()
2162 LValue LB = createSectionLVal(CGF, KmpInt32Ty, ".omp.sections.lb.", in EmitSections()
2163 CGF.Builder.getInt32(0)); in EmitSections()
2164 auto *GlobalUBVal = CS != nullptr ? CGF.Builder.getInt32(CS->size() - 1) in EmitSections()
2165 : CGF.Builder.getInt32(0); in EmitSections()
2167 createSectionLVal(CGF, KmpInt32Ty, ".omp.sections.ub.", GlobalUBVal); in EmitSections()
2168 LValue ST = createSectionLVal(CGF, KmpInt32Ty, ".omp.sections.st.", in EmitSections()
2169 CGF.Builder.getInt32(1)); in EmitSections()
2170 LValue IL = createSectionLVal(CGF, KmpInt32Ty, ".omp.sections.il.", in EmitSections()
2171 CGF.Builder.getInt32(0)); in EmitSections()
2173 LValue IV = createSectionLVal(CGF, KmpInt32Ty, ".omp.sections.iv."); in EmitSections()
2175 CodeGenFunction::OpaqueValueMapping OpaqueIV(CGF, &IVRefExpr, IV); in EmitSections()
2177 CodeGenFunction::OpaqueValueMapping OpaqueUB(CGF, &UBRefExpr, UB); in EmitSections()
2185 auto BodyGen = [Stmt, CS, &S, &IV](CodeGenFunction &CGF) { in EmitSections() argument
2197 auto *ExitBB = CGF.createBasicBlock(".omp.sections.exit"); in EmitSections()
2198 auto *SwitchStmt = CGF.Builder.CreateSwitch( in EmitSections()
2199 CGF.EmitLoadOfLValue(IV, S.getLocStart()).getScalarVal(), ExitBB, in EmitSections()
2204 auto CaseBB = CGF.createBasicBlock(".omp.sections.case"); in EmitSections()
2205 CGF.EmitBlock(CaseBB); in EmitSections()
2206 SwitchStmt->addCase(CGF.Builder.getInt32(CaseNumber), CaseBB); in EmitSections()
2207 CGF.EmitStmt(SubStmt); in EmitSections()
2208 CGF.EmitBranch(ExitBB); in EmitSections()
2212 auto CaseBB = CGF.createBasicBlock(".omp.sections.case"); in EmitSections()
2213 CGF.EmitBlock(CaseBB); in EmitSections()
2214 SwitchStmt->addCase(CGF.Builder.getInt32(0), CaseBB); in EmitSections()
2215 CGF.EmitStmt(Stmt); in EmitSections()
2216 CGF.EmitBranch(ExitBB); in EmitSections()
2218 CGF.EmitBlock(ExitBB, /*IsFinished=*/true); in EmitSections()
2221 CodeGenFunction::OMPPrivateScope LoopScope(CGF); in EmitSections()
2222 if (CGF.EmitOMPFirstprivateClause(S, LoopScope)) { in EmitSections()
2226 CGF.CGM.getOpenMPRuntime().emitBarrierCall( in EmitSections()
2227 CGF, S.getLocStart(), OMPD_unknown, /*EmitChecks=*/false, in EmitSections()
2230 CGF.EmitOMPPrivateClause(S, LoopScope); in EmitSections()
2231 HasLastprivates = CGF.EmitOMPLastprivateClauseInit(S, LoopScope); in EmitSections()
2232 CGF.EmitOMPReductionClauseInit(S, LoopScope); in EmitSections()
2238 CGF.CGM.getOpenMPRuntime().emitForStaticInit( in EmitSections()
2239 CGF, S.getLocStart(), ScheduleKind, /*IVSize=*/32, in EmitSections()
2243 auto *UBVal = CGF.EmitLoadOfScalar(UB, S.getLocStart()); in EmitSections()
2244 auto *MinUBGlobalUB = CGF.Builder.CreateSelect( in EmitSections()
2245 CGF.Builder.CreateICmpSLT(UBVal, GlobalUBVal), UBVal, GlobalUBVal); in EmitSections()
2246 CGF.EmitStoreOfScalar(MinUBGlobalUB, UB); in EmitSections()
2248 CGF.EmitStoreOfScalar(CGF.EmitLoadOfScalar(LB, S.getLocStart()), IV); in EmitSections()
2250 CGF.EmitOMPInnerLoop(S, /*RequiresCleanup=*/false, &Cond, &Inc, BodyGen, in EmitSections()
2253 CGF.CGM.getOpenMPRuntime().emitForStaticFinish(CGF, S.getLocStart()); in EmitSections()
2254 CGF.EmitOMPReductionClauseFinal(S); in EmitSections()
2257 CGF, S, [&](CodeGenFunction &CGF) -> llvm::Value * { in EmitSections() argument
2258 return CGF.Builder.CreateIsNotNull( in EmitSections()
2259 CGF.EmitLoadOfScalar(IL, S.getLocStart())); in EmitSections()
2264 CGF.EmitOMPLastprivateClauseFinal( in EmitSections()
2266 CGF.Builder.CreateIsNotNull( in EmitSections()
2267 CGF.EmitLoadOfScalar(IL, S.getLocStart()))); in EmitSections()
2301 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPSectionDirective() argument
2302 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPSectionDirective()
2327 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &Action) { in EmitOMPSingleDirective() argument
2328 Action.Enter(CGF); in EmitOMPSingleDirective()
2329 OMPPrivateScope SingleScope(CGF); in EmitOMPSingleDirective()
2330 (void)CGF.EmitOMPFirstprivateClause(S, SingleScope); in EmitOMPSingleDirective()
2331 CGF.EmitOMPPrivateClause(S, SingleScope); in EmitOMPSingleDirective()
2333 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPSingleDirective()
2351 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &Action) { in EmitOMPMasterDirective() argument
2352 Action.Enter(CGF); in EmitOMPMasterDirective()
2353 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPMasterDirective()
2360 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &Action) { in EmitOMPCriticalDirective() argument
2361 Action.Enter(CGF); in EmitOMPCriticalDirective()
2362 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPCriticalDirective()
2377 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPParallelForDirective() argument
2378 CGF.EmitOMPWorksharingLoop(S); in EmitOMPParallelForDirective()
2387 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPParallelForSimdDirective() argument
2388 CGF.EmitOMPWorksharingLoop(S); in EmitOMPParallelForSimdDirective()
2397 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPParallelSectionsDirective() argument
2398 CGF.EmitSections(S); in EmitOMPParallelSectionsDirective()
2491 CodeGenFunction &CGF, PrePostActionTy &Action) { in EmitOMPTaskBasedDirective() argument
2493 OMPPrivateScope Scope(CGF); in EmitOMPTaskBasedDirective()
2496 auto *CopyFn = CGF.Builder.CreateLoad( in EmitOMPTaskBasedDirective()
2497 CGF.GetAddrOfLocalVar(CS->getCapturedDecl()->getParam(3))); in EmitOMPTaskBasedDirective()
2498 auto *PrivatesPtr = CGF.Builder.CreateLoad( in EmitOMPTaskBasedDirective()
2499 CGF.GetAddrOfLocalVar(CS->getCapturedDecl()->getParam(2))); in EmitOMPTaskBasedDirective()
2506 Address PrivatePtr = CGF.CreateMemTemp( in EmitOMPTaskBasedDirective()
2507 CGF.getContext().getPointerType(E->getType()), ".priv.ptr.addr"); in EmitOMPTaskBasedDirective()
2514 CGF.CreateMemTemp(CGF.getContext().getPointerType(E->getType()), in EmitOMPTaskBasedDirective()
2522 CGF.CreateMemTemp(CGF.getContext().getPointerType(E->getType()), in EmitOMPTaskBasedDirective()
2527 CGF.EmitRuntimeCall(CopyFn, CallArgs); in EmitOMPTaskBasedDirective()
2532 /*RefersToEnclosingVariableOrCapture=*/CGF.CapturedStmtInfo->lookup( in EmitOMPTaskBasedDirective()
2535 Scope.addPrivate(Pair.first, [&CGF, &DRE]() { in EmitOMPTaskBasedDirective()
2536 return CGF.EmitLValue(&DRE).getAddress(); in EmitOMPTaskBasedDirective()
2540 Address Replacement(CGF.Builder.CreateLoad(Pair.second), in EmitOMPTaskBasedDirective()
2541 CGF.getContext().getDeclAlign(Pair.first)); in EmitOMPTaskBasedDirective()
2547 Action.Enter(CGF); in EmitOMPTaskBasedDirective()
2548 BodyGen(CGF); in EmitOMPTaskBasedDirective()
2574 auto &&BodyGen = [CS](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPTaskDirective() argument
2575 CGF.EmitStmt(CS->getCapturedStmt()); in EmitOMPTaskDirective()
2578 IfCond](CodeGenFunction &CGF, llvm::Value *OutlinedFn, in EmitOMPTaskDirective()
2580 CGF.CGM.getOpenMPRuntime().emitTaskCall(CGF, S.getLocStart(), S, OutlinedFn, in EmitOMPTaskDirective()
2602 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &Action) { in EmitOMPTaskgroupDirective() argument
2603 Action.Enter(CGF); in EmitOMPTaskgroupDirective()
2604 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPTaskgroupDirective()
2711 [&S, LoopExit](CodeGenFunction &CGF) { in EmitOMPDistributeLoop() argument
2712 CGF.EmitOMPLoopBody(S, LoopExit); in EmitOMPDistributeLoop()
2713 CGF.EmitStopPoint(&S); in EmitOMPDistributeLoop()
2738 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPDistributeDirective() argument
2739 CGF.EmitOMPDistributeLoop(S); in EmitOMPDistributeDirective()
2748 CodeGenFunction CGF(CGM, /*suppressNewContext=*/true); in emitOutlinedOrderedFunction() local
2750 CGF.CapturedStmtInfo = &CapStmtInfo; in emitOutlinedOrderedFunction()
2751 auto *Fn = CGF.GenerateOpenMPCapturedStmtFunction(*S); in emitOutlinedOrderedFunction()
2763 auto &&CodeGen = [&S, C, this](CodeGenFunction &CGF, in EmitOMPOrderedDirective()
2768 CGF.GenerateOpenMPCapturedVars(*CS, CapturedVars); in EmitOMPOrderedDirective()
2770 CGF.EmitNounwindRuntimeCall(OutlinedFn, CapturedVars); in EmitOMPOrderedDirective()
2772 Action.Enter(CGF); in EmitOMPOrderedDirective()
2773 CGF.EmitStmt( in EmitOMPOrderedDirective()
2781 static llvm::Value *convertToScalarValue(CodeGenFunction &CGF, RValue Val, in convertToScalarValue() argument
2784 assert(CGF.hasScalarEvaluationKind(DestType) && in convertToScalarValue()
2788 ? CGF.EmitScalarConversion(Val.getScalarVal(), SrcType, DestType, in convertToScalarValue()
2790 : CGF.EmitComplexToScalarConversion(Val.getComplexVal(), SrcType, in convertToScalarValue()
2795 convertToComplexValue(CodeGenFunction &CGF, RValue Val, QualType SrcType, in convertToComplexValue() argument
2797 assert(CGF.getEvaluationKind(DestType) == TEK_Complex && in convertToComplexValue()
2803 auto ScalarVal = CGF.EmitScalarConversion(Val.getScalarVal(), SrcType, in convertToComplexValue()
2811 ComplexVal.first = CGF.EmitScalarConversion( in convertToComplexValue()
2813 ComplexVal.second = CGF.EmitScalarConversion( in convertToComplexValue()
2819 static void emitSimpleAtomicStore(CodeGenFunction &CGF, bool IsSeqCst, in emitSimpleAtomicStore() argument
2822 CGF.EmitStoreThroughGlobalRegLValue(RVal, LVal); in emitSimpleAtomicStore()
2824 CGF.EmitAtomicStore(RVal, LVal, in emitSimpleAtomicStore()
2849 static void EmitOMPAtomicReadExpr(CodeGenFunction &CGF, bool IsSeqCst, in EmitOMPAtomicReadExpr() argument
2855 LValue XLValue = CGF.EmitLValue(X); in EmitOMPAtomicReadExpr()
2856 LValue VLValue = CGF.EmitLValue(V); in EmitOMPAtomicReadExpr()
2858 ? CGF.EmitLoadOfLValue(XLValue, Loc) in EmitOMPAtomicReadExpr()
2859 : CGF.EmitAtomicLoad( in EmitOMPAtomicReadExpr()
2869 CGF.CGM.getOpenMPRuntime().emitFlush(CGF, llvm::None, Loc); in EmitOMPAtomicReadExpr()
2870 CGF.emitOMPSimpleStore(VLValue, Res, X->getType().getNonReferenceType(), Loc); in EmitOMPAtomicReadExpr()
2873 static void EmitOMPAtomicWriteExpr(CodeGenFunction &CGF, bool IsSeqCst, in EmitOMPAtomicWriteExpr() argument
2878 emitSimpleAtomicStore(CGF, IsSeqCst, CGF.EmitLValue(X), CGF.EmitAnyExpr(E)); in EmitOMPAtomicWriteExpr()
2884 CGF.CGM.getOpenMPRuntime().emitFlush(CGF, llvm::None, Loc); in EmitOMPAtomicWriteExpr()
2887 static std::pair<bool, RValue> emitOMPAtomicRMW(CodeGenFunction &CGF, LValue X, in emitOMPAtomicRMW() argument
2892 auto &Context = CGF.CGM.getContext(); in emitOMPAtomicRMW()
2971 UpdateVal = CGF.Builder.CreateIntCast( in emitOMPAtomicRMW()
2975 auto *Res = CGF.Builder.CreateAtomicRMW(RMWOp, X.getPointer(), UpdateVal, AO); in emitOMPAtomicRMW()
3003 static void EmitOMPAtomicUpdateExpr(CodeGenFunction &CGF, bool IsSeqCst, in EmitOMPAtomicUpdateExpr() argument
3017 LValue XLValue = CGF.EmitLValue(X); in EmitOMPAtomicUpdateExpr()
3018 RValue ExprRValue = CGF.EmitAnyExpr(E); in EmitOMPAtomicUpdateExpr()
3026 [&CGF, UE, ExprRValue, XRValExpr, ERValExpr](RValue XRValue) -> RValue { in EmitOMPAtomicUpdateExpr()
3027 CodeGenFunction::OpaqueValueMapping MapExpr(CGF, ERValExpr, ExprRValue); in EmitOMPAtomicUpdateExpr()
3028 CodeGenFunction::OpaqueValueMapping MapX(CGF, XRValExpr, XRValue); in EmitOMPAtomicUpdateExpr()
3029 return CGF.EmitAnyExpr(UE); in EmitOMPAtomicUpdateExpr()
3031 (void)CGF.EmitOMPAtomicSimpleUpdateExpr( in EmitOMPAtomicUpdateExpr()
3038 CGF.CGM.getOpenMPRuntime().emitFlush(CGF, llvm::None, Loc); in EmitOMPAtomicUpdateExpr()
3041 static RValue convertToType(CodeGenFunction &CGF, RValue Value, in convertToType() argument
3044 switch (CGF.getEvaluationKind(ResType)) { in convertToType()
3047 convertToScalarValue(CGF, Value, SourceType, ResType, Loc)); in convertToType()
3049 auto Res = convertToComplexValue(CGF, Value, SourceType, ResType, Loc); in convertToType()
3058 static void EmitOMPAtomicCaptureExpr(CodeGenFunction &CGF, bool IsSeqCst, in EmitOMPAtomicCaptureExpr() argument
3066 LValue VLValue = CGF.EmitLValue(V); in EmitOMPAtomicCaptureExpr()
3067 LValue XLValue = CGF.EmitLValue(X); in EmitOMPAtomicCaptureExpr()
3068 RValue ExprRValue = CGF.EmitAnyExpr(E); in EmitOMPAtomicCaptureExpr()
3088 auto &&Gen = [&CGF, &NewVVal, UE, ExprRValue, XRValExpr, ERValExpr, in EmitOMPAtomicCaptureExpr()
3090 CodeGenFunction::OpaqueValueMapping MapExpr(CGF, ERValExpr, ExprRValue); in EmitOMPAtomicCaptureExpr()
3091 CodeGenFunction::OpaqueValueMapping MapX(CGF, XRValExpr, XRValue); in EmitOMPAtomicCaptureExpr()
3092 RValue Res = CGF.EmitAnyExpr(UE); in EmitOMPAtomicCaptureExpr()
3096 auto Res = CGF.EmitOMPAtomicSimpleUpdateExpr( in EmitOMPAtomicCaptureExpr()
3106 CodeGenFunction::OpaqueValueMapping MapExpr(CGF, ERValExpr, ExprRValue); in EmitOMPAtomicCaptureExpr()
3107 CodeGenFunction::OpaqueValueMapping MapX(CGF, XRValExpr, Res.second); in EmitOMPAtomicCaptureExpr()
3108 NewVVal = CGF.EmitAnyExpr(UE); in EmitOMPAtomicCaptureExpr()
3114 ExprRValue = convertToType(CGF, ExprRValue, E->getType(), in EmitOMPAtomicCaptureExpr()
3116 auto &&Gen = [&CGF, &NewVVal, ExprRValue](RValue XRValue) -> RValue { in EmitOMPAtomicCaptureExpr()
3121 auto Res = CGF.EmitOMPAtomicSimpleUpdateExpr( in EmitOMPAtomicCaptureExpr()
3130 CGF.emitOMPSimpleStore(VLValue, NewVVal, NewVValType, Loc); in EmitOMPAtomicCaptureExpr()
3136 CGF.CGM.getOpenMPRuntime().emitFlush(CGF, llvm::None, Loc); in EmitOMPAtomicCaptureExpr()
3139 static void EmitOMPAtomicExpr(CodeGenFunction &CGF, OpenMPClauseKind Kind, in EmitOMPAtomicExpr() argument
3146 EmitOMPAtomicReadExpr(CGF, IsSeqCst, X, V, Loc); in EmitOMPAtomicExpr()
3149 EmitOMPAtomicWriteExpr(CGF, IsSeqCst, X, E, Loc); in EmitOMPAtomicExpr()
3153 EmitOMPAtomicUpdateExpr(CGF, IsSeqCst, X, E, UE, IsXLHSInRHSPart, Loc); in EmitOMPAtomicExpr()
3156 EmitOMPAtomicCaptureExpr(CGF, IsSeqCst, IsPostfixUpdate, V, X, E, UE, in EmitOMPAtomicExpr()
3232 auto &&CodeGen = [&S, Kind, IsSeqCst, CS](CodeGenFunction &CGF, in EmitOMPAtomicDirective()
3234 CGF.EmitStopPoint(CS); in EmitOMPAtomicDirective()
3235 EmitOMPAtomicExpr(CGF, Kind, IsSeqCst, S.isPostfixUpdate(), S.getX(), in EmitOMPAtomicDirective()
3249 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &Action) { in EmitOMPTargetDirectiveOutlinedFunction() argument
3250 OMPPrivateScope PrivateScope(CGF); in EmitOMPTargetDirectiveOutlinedFunction()
3251 (void)CGF.EmitOMPFirstprivateClause(S, PrivateScope); in EmitOMPTargetDirectiveOutlinedFunction()
3252 CGF.EmitOMPPrivateClause(S, PrivateScope); in EmitOMPTargetDirectiveOutlinedFunction()
3255 Action.Enter(CGF); in EmitOMPTargetDirectiveOutlinedFunction()
3256 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPTargetDirectiveOutlinedFunction()
3317 static void emitCommonOMPTeamsDirective(CodeGenFunction &CGF, in emitCommonOMPTeamsDirective() argument
3322 auto OutlinedFn = CGF.CGM.getOpenMPRuntime(). in emitCommonOMPTeamsDirective()
3333 CGF.CGM.getOpenMPRuntime().emitNumTeamsClause(CGF, NumTeams, ThreadLimit, in emitCommonOMPTeamsDirective()
3337 OMPLexicalScope Scope(CGF, S); in emitCommonOMPTeamsDirective()
3339 CGF.GenerateOpenMPCapturedVars(*CS, CapturedVars); in emitCommonOMPTeamsDirective()
3340 CGF.CGM.getOpenMPRuntime().emitTeamsCall(CGF, S, S.getLocStart(), OutlinedFn, in emitCommonOMPTeamsDirective()
3346 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPTeamsDirective() argument
3347 OMPPrivateScope PrivateScope(CGF); in EmitOMPTeamsDirective()
3348 (void)CGF.EmitOMPFirstprivateClause(S, PrivateScope); in EmitOMPTeamsDirective()
3349 CGF.EmitOMPPrivateClause(S, PrivateScope); in EmitOMPTeamsDirective()
3351 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPTeamsDirective()
3389 auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPTargetDataDirective() argument
3390 CGF.EmitStmt(cast<CapturedStmt>(S.getAssociatedStmt())->getCapturedStmt()); in EmitOMPTargetDataDirective()
3467 static void mapParam(CodeGenFunction &CGF, const DeclRefExpr *Helper, in mapParam() argument
3472 VDecl, [&CGF, PVD]() -> Address { return CGF.GetAddrOfLocalVar(PVD); }); in mapParam()
3506 auto &&BodyGen = [CS, &S](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPTaskLoopBasedDirective() argument
3518 OMPLoopScope PreInitScope(CGF, S); in EmitOMPTaskLoopBasedDirective()
3519 if (CGF.ConstantFoldsToSimpleInteger(S.getPreCond(), CondConstant)) { in EmitOMPTaskLoopBasedDirective()
3523 auto *ThenBlock = CGF.createBasicBlock("taskloop.if.then"); in EmitOMPTaskLoopBasedDirective()
3524 ContBlock = CGF.createBasicBlock("taskloop.if.end"); in EmitOMPTaskLoopBasedDirective()
3525 emitPreCond(CGF, S, S.getPreCond(), ThenBlock, ContBlock, in EmitOMPTaskLoopBasedDirective()
3526 CGF.getProfileCount(&S)); in EmitOMPTaskLoopBasedDirective()
3527 CGF.EmitBlock(ThenBlock); in EmitOMPTaskLoopBasedDirective()
3528 CGF.incrementProfileCounter(&S); in EmitOMPTaskLoopBasedDirective()
3532 CGF.EmitOMPSimdInit(S); in EmitOMPTaskLoopBasedDirective()
3534 OMPPrivateScope LoopScope(CGF); in EmitOMPTaskLoopBasedDirective()
3542 mapParam(CGF, cast<DeclRefExpr>(S.getLowerBoundVariable()), *LBP, in EmitOMPTaskLoopBasedDirective()
3544 mapParam(CGF, cast<DeclRefExpr>(S.getUpperBoundVariable()), *UBP, in EmitOMPTaskLoopBasedDirective()
3546 mapParam(CGF, cast<DeclRefExpr>(S.getStrideVariable()), *STP, LoopScope); in EmitOMPTaskLoopBasedDirective()
3547 mapParam(CGF, cast<DeclRefExpr>(S.getIsLastIterVariable()), *LIP, in EmitOMPTaskLoopBasedDirective()
3549 CGF.EmitOMPPrivateLoopCounters(S, LoopScope); in EmitOMPTaskLoopBasedDirective()
3550 bool HasLastprivateClause = CGF.EmitOMPLastprivateClauseInit(S, LoopScope); in EmitOMPTaskLoopBasedDirective()
3555 CGF.EmitVarDecl(*IVDecl); in EmitOMPTaskLoopBasedDirective()
3556 CGF.EmitIgnoredExpr(S.getInit()); in EmitOMPTaskLoopBasedDirective()
3562 CGF.EmitVarDecl(*cast<VarDecl>(LIExpr->getDecl())); in EmitOMPTaskLoopBasedDirective()
3564 CGF.EmitIgnoredExpr(S.getCalcLastIteration()); in EmitOMPTaskLoopBasedDirective()
3567 CGF.EmitOMPInnerLoop(S, LoopScope.requiresCleanups(), S.getCond(), in EmitOMPTaskLoopBasedDirective()
3569 [&S](CodeGenFunction &CGF) { in EmitOMPTaskLoopBasedDirective() argument
3570 CGF.EmitOMPLoopBody(S, JumpDest()); in EmitOMPTaskLoopBasedDirective()
3571 CGF.EmitStopPoint(&S); in EmitOMPTaskLoopBasedDirective()
3576 CGF.EmitBranch(ContBlock); in EmitOMPTaskLoopBasedDirective()
3577 CGF.EmitBlock(ContBlock, true); in EmitOMPTaskLoopBasedDirective()
3581 CGF.EmitOMPLastprivateClauseFinal( in EmitOMPTaskLoopBasedDirective()
3583 CGF.Builder.CreateIsNotNull(CGF.EmitLoadOfScalar( in EmitOMPTaskLoopBasedDirective()
3584 CGF.GetAddrOfLocalVar(*LIP), /*Volatile=*/false, in EmitOMPTaskLoopBasedDirective()
3589 IfCond](CodeGenFunction &CGF, llvm::Value *OutlinedFn, in EmitOMPTaskLoopBasedDirective()
3591 auto &&CodeGen = [&](CodeGenFunction &CGF, PrePostActionTy &) { in EmitOMPTaskLoopBasedDirective() argument
3592 OMPLoopScope PreInitScope(CGF, S); in EmitOMPTaskLoopBasedDirective()
3593 CGF.CGM.getOpenMPRuntime().emitTaskLoopCall(CGF, S.getLocStart(), S, in EmitOMPTaskLoopBasedDirective()
3597 CGF.CGM.getOpenMPRuntime().emitInlinedDirective(CGF, OMPD_taskloop, in EmitOMPTaskLoopBasedDirective()