reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
5475 Address LHSAddr = CGF.GetAddrOfLocalVar(LHSVar); 5476 Address RHSAddr = CGF.GetAddrOfLocalVar(RHSVar); 5480 llvm::Value *NumElements = CGF.emitArrayLength(ArrayTy, ElementTy, LHSAddr); 5485 llvm::Value *LHSEnd = CGF.Builder.CreateGEP(LHSBegin, NumElements); 5487 llvm::BasicBlock *BodyBB = CGF.createBasicBlock("omp.arraycpy.body"); 5488 llvm::BasicBlock *DoneBB = CGF.createBasicBlock("omp.arraycpy.done"); 5490 CGF.Builder.CreateICmpEQ(LHSBegin, LHSEnd, "omp.arraycpy.isempty"); 5491 CGF.Builder.CreateCondBr(IsEmpty, DoneBB, BodyBB); 5494 llvm::BasicBlock *EntryBB = CGF.Builder.GetInsertBlock(); 5495 CGF.EmitBlock(BodyBB); 5497 CharUnits ElementSize = CGF.getContext().getTypeSizeInChars(ElementTy); 5499 llvm::PHINode *RHSElementPHI = CGF.Builder.CreatePHI( 5506 llvm::PHINode *LHSElementPHI = CGF.Builder.CreatePHI( 5514 CodeGenFunction::OMPPrivateScope Scope(CGF); 5518 RedOpGen(CGF, XExpr, EExpr, UpExpr); 5522 llvm::Value *LHSElementNext = CGF.Builder.CreateConstGEP1_32( 5524 llvm::Value *RHSElementNext = CGF.Builder.CreateConstGEP1_32( 5528 CGF.Builder.CreateICmpEQ(LHSElementNext, LHSEnd, "omp.arraycpy.done"); 5529 CGF.Builder.CreateCondBr(Done, DoneBB, BodyBB); 5530 LHSElementPHI->addIncoming(LHSElementNext, CGF.Builder.GetInsertBlock()); 5531 RHSElementPHI->addIncoming(RHSElementNext, CGF.Builder.GetInsertBlock()); 5534 CGF.EmitBlock(DoneBB, /*IsFinished=*/true);