Lines Matching refs:CGF

231   CodeGenFunction &CGF;  member in __anone7cacfbd0111::ScalarExprEmitter
238 : CGF(cgf), Builder(CGF.Builder), IgnoreResultAssign(ira), in ScalarExprEmitter()
252 llvm::Type *ConvertType(QualType T) { return CGF.ConvertType(T); } in ConvertType()
253 LValue EmitLValue(const Expr *E) { return CGF.EmitLValue(E); } in EmitLValue()
255 return CGF.EmitCheckedLValue(E, TCK); in EmitCheckedLValue()
262 return CGF.EmitLoadOfLValue(LV, Loc).getScalarVal(); in EmitLoadOfLValue()
280 if (isa<ParmVarDecl>(VD) && !CGF.SanOpts.has(SanitizerKind::Alignment)) in EmitLValueAlignmentAssumption()
294 Value *AlignmentValue = CGF.EmitScalarExpr(AVAttr->getAlignment()); in EmitLValueAlignmentAssumption()
296 CGF.emitAlignmentAssumption(V, E, AVAttr->getLocation(), AlignmentCI); in EmitLValueAlignmentAssumption()
392 Value *Zero = CGF.CGM.getNullPointer(cast<llvm::PointerType>(V->getType()), QT); in EmitPointerToBoolConversion()
421 ApplyDebugLocation DL(CGF, E); in Visit()
426 S->dump(llvm::errs(), CGF.getContext()); in VisitStmt()
437 if (Value *Result = ConstantEmitter(CGF).tryEmitConstantExpr(E)) { in VisitConstantExpr()
439 return CGF.EmitLoadOfScalar( in VisitConstantExpr()
440 Address(Result, CGF.convertTypeForLoadStore(E->getType()), in VisitConstantExpr()
441 CGF.getContext().getTypeAlignInChars(E->getType())), in VisitConstantExpr()
457 return CGF.EmitCoawaitExpr(*S).getScalarVal(); in VisitCoawaitExpr()
460 return CGF.EmitCoyieldExpr(*S).getScalarVal(); in VisitCoyieldExpr()
497 llvm::Value *V = CGF.GetAddrOfLabel(E->getLabel()); in VisitAddrLabelExpr()
506 return CGF.EmitPseudoObjectRValue(E).getScalarVal(); in VisitPseudoObjectExpr()
514 return EmitLoadOfLValue(CGF.getOrCreateOpaqueLValueMapping(E), in VisitOpaqueValueExpr()
518 return CGF.getOrCreateOpaqueRValueMapping(E).getScalarVal(); in VisitOpaqueValueExpr()
523 if (CodeGenFunction::ConstantEmission Constant = CGF.tryEmitAsConstant(E)) in VisitDeclRefExpr()
524 return CGF.emitScalarConstant(Constant, E); in VisitDeclRefExpr()
529 return CGF.EmitObjCSelectorExpr(E); in VisitObjCSelectorExpr()
532 return CGF.EmitObjCProtocolExpr(E); in VisitObjCProtocolExpr()
541 return CGF.EmitObjCMessageExpr(E).getScalarVal(); in VisitObjCMessageExpr()
545 LValue LV = CGF.EmitObjCIsaExpr(E); in VisitObjCIsaExpr()
546 Value *V = CGF.EmitLoadOfLValue(LV, E->getExprLoc()).getScalarVal(); in VisitObjCIsaExpr()
555 if (Version <= CGF.CGM.getTarget().getPlatformMinVersion()) in VisitObjCAvailabilityCheckExpr()
558 return CGF.EmitBuiltinAvailable(Version); in VisitObjCAvailabilityCheckExpr()
579 assert(CGF.getArrayInitIndex() && in VisitArrayInitIndexExpr()
581 return CGF.getArrayInitIndex(); in VisitArrayInitIndexExpr()
588 CGF.CGM.EmitExplicitCastExprType(E, &CGF); in VisitExplicitCastExpr()
594 if (E->getCallReturnType(CGF.getContext())->isReferenceType()) in VisitCallExpr()
597 Value *V = CGF.EmitCallExpr(E).getScalarVal(); in VisitCallExpr()
633 return CGF.CGM.getMemberPointerConstant(E); in VisitUnaryAddrOf()
635 return EmitLValue(E->getSubExpr()).getPointer(CGF); in VisitUnaryAddrOf()
667 auto &Ctx = CGF.getContext(); in VisitSourceLocExpr()
669 SLE->EvaluateInContext(Ctx, CGF.CurSourceLocExprScope.getDefaultExpr()); in VisitSourceLocExpr()
670 return ConstantEmitter(CGF).emitAbstract(SLE->getLocation(), Evaluated, in VisitSourceLocExpr()
675 CodeGenFunction::CXXDefaultArgExprScope Scope(CGF, DAE); in VisitCXXDefaultArgExpr()
679 CodeGenFunction::CXXDefaultInitExprScope Scope(CGF, DIE); in VisitCXXDefaultInitExpr()
683 return CGF.LoadCXXThis(); in VisitCXXThisExpr()
688 return CGF.EmitCXXNewExpr(E); in VisitCXXNewExpr()
691 CGF.EmitCXXDeleteExpr(E); in VisitCXXDeleteExpr()
721 CGF.EmitScalarExpr(E->getBase()); in VisitCXXPseudoDestructorExpr()
730 CGF.EmitCXXThrowExpr(E); in VisitCXXThrowExpr()
741 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitMul()
743 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitMul()
747 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitMul()
751 if (CanElideOverflowCheck(CGF.getContext(), Ops)) in EmitMul()
766 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Ops.FPFeatures); in EmitMul()
775 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow) && in EmitMul()
776 !CanElideOverflowCheck(CGF.getContext(), Ops)) in EmitMul()
781 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Ops.FPFeatures); in EmitMul()
836 const auto &Ctx = CGF.getContext(); in getPromotionType()
913 return CGF.EmitObjCStringLiteral(E); in VisitObjCStringLiteral()
916 return CGF.EmitObjCBoxedExpr(E); in VisitObjCBoxedExpr()
919 return CGF.EmitObjCArrayLiteral(E); in VisitObjCArrayLiteral()
922 return CGF.EmitObjCDictionaryLiteral(E); in VisitObjCDictionaryLiteral()
945 return CGF.CGM.getCXXABI().EmitMemberPointerIsNotNull(CGF, Src, MPT); in EmitConversionToBool()
964 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitFloatConversionCheck()
970 CGF.getContext().getFloatTypeSemantics(OrigSrcType); in EmitFloatConversionCheck()
975 unsigned Width = CGF.getContext().getIntWidth(DstType); in EmitFloatConversionCheck()
1006 CGF.getContext().getFloatTypeSemantics(SrcType); in EmitFloatConversionCheck()
1018 llvm::Constant *StaticArgs[] = {CGF.EmitCheckSourceLocation(Loc), in EmitFloatConversionCheck()
1019 CGF.EmitCheckTypeDescriptor(OrigSrcType), in EmitFloatConversionCheck()
1020 CGF.EmitCheckTypeDescriptor(DstType)}; in EmitFloatConversionCheck()
1021 CGF.EmitCheck(std::make_pair(Check, SanitizerKind::FloatCastOverflow), in EmitFloatConversionCheck()
1073 if (!CGF.SanOpts.hasOneOf(SanitizerKind::ImplicitIntegerTruncation)) in EmitIntegerTruncationCheck()
1095 if (CGF.SanOpts.has(SanitizerKind::ImplicitIntegerSignChange) && in EmitIntegerTruncationCheck()
1099 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitIntegerTruncationCheck()
1108 if (!CGF.SanOpts.has(Check.second.second)) in EmitIntegerTruncationCheck()
1112 CGF.EmitCheckSourceLocation(Loc), CGF.EmitCheckTypeDescriptor(SrcType), in EmitIntegerTruncationCheck()
1113 CGF.EmitCheckTypeDescriptor(DstType), in EmitIntegerTruncationCheck()
1117 CGF.EmitCheck(Check.second, SanitizerHandler::ImplicitConversion, StaticArgs, in EmitIntegerTruncationCheck()
1181 if (!CGF.SanOpts.has(SanitizerKind::ImplicitIntegerSignChange)) in EmitIntegerSignChangeCheck()
1214 if (CGF.SanOpts.has(SanitizerKind::ImplicitSignedIntegerTruncation) && in EmitIntegerSignChangeCheck()
1223 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitIntegerSignChangeCheck()
1239 if (CGF.SanOpts.has(SanitizerKind::ImplicitSignedIntegerTruncation) && in EmitIntegerSignChangeCheck()
1252 CGF.EmitCheckSourceLocation(Loc), CGF.EmitCheckTypeDescriptor(SrcType), in EmitIntegerSignChangeCheck()
1253 CGF.EmitCheckTypeDescriptor(DstType), in EmitIntegerSignChangeCheck()
1257 CGF.EmitCheck(Checks, SanitizerHandler::ImplicitConversion, StaticArgs, in EmitIntegerSignChangeCheck()
1434 if (!CGF.CGM.getCodeGenOpts().StrictFloatCastOverflow) { in EmitScalarCast()
1437 return Builder.CreateCall(CGF.CGM.getIntrinsic(IID, {DstTy, SrcTy}), Src); in EmitScalarCast()
1489 SrcType = CGF.getContext().getCanonicalType(SrcType); in EmitScalarConversion()
1490 DstType = CGF.getContext().getCanonicalType(DstType); in EmitScalarConversion()
1506 if (SrcType->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarConversion()
1509 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) in EmitScalarConversion()
1511 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16, DstTy), in EmitScalarConversion()
1517 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarConversion()
1519 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16, in EmitScalarConversion()
1520 CGF.CGM.FloatTy), in EmitScalarConversion()
1523 Src = Builder.CreateFPExt(Src, CGF.CGM.FloatTy, "conv"); in EmitScalarConversion()
1525 SrcType = CGF.getContext().FloatTy; in EmitScalarConversion()
1526 SrcTy = CGF.FloatTy; in EmitScalarConversion()
1550 llvm::Type *MiddleTy = CGF.CGM.getDataLayout().getIntPtrType(DstPT); in EmitScalarConversion()
1626 if (CGF.SanOpts.has(SanitizerKind::FloatCastOverflow) && in EmitScalarConversion()
1632 if (DstType->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarConversion()
1637 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) in EmitScalarConversion()
1639 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16, SrcTy), Src); in EmitScalarConversion()
1643 DstTy = CGF.FloatTy; in EmitScalarConversion()
1649 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarConversion()
1652 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16, CGF.CGM.FloatTy), in EmitScalarConversion()
1677 CGF.getContext().getFixedPointSemantics(DstTy)); in EmitFixedPointConversion()
1680 CGF.getContext().getFixedPointSemantics(SrcTy), in EmitFixedPointConversion()
1683 auto SrcFPSema = CGF.getContext().getFixedPointSemantics(SrcTy); in EmitFixedPointConversion()
1684 auto DstFPSema = CGF.getContext().getFixedPointSemantics(DstTy); in EmitFixedPointConversion()
1723 return CGF.EmitFromMemory(CGF.CGM.EmitNullConstant(Ty), Ty); in EmitNullValue()
1732 assert(CGF.IsSanitizerScope); in EmitBinOpCheck()
1741 StaticData.push_back(CGF.EmitCheckSourceLocation(Info.E->getExprLoc())); in EmitBinOpCheck()
1745 StaticData.push_back(CGF.EmitCheckTypeDescriptor(UO->getType())); in EmitBinOpCheck()
1753 CGF.EmitCheckTypeDescriptor(BO->getLHS()->getType())); in EmitBinOpCheck()
1755 CGF.EmitCheckTypeDescriptor(BO->getRHS()->getType())); in EmitBinOpCheck()
1759 StaticData.push_back(CGF.EmitCheckTypeDescriptor(Info.Ty)); in EmitBinOpCheck()
1768 StaticData.push_back(CGF.EmitCheckTypeDescriptor(Info.Ty)); in EmitBinOpCheck()
1774 CGF.EmitCheck(Checks, Check, StaticData, DynamicData); in EmitBinOpCheck()
1782 CGF.ErrorUnsupported(E, "scalar expression"); in VisitExpr()
1785 return llvm::UndefValue::get(CGF.ConvertType(E->getType())); in VisitExpr()
1790 ASTContext &Context = CGF.getContext(); in VisitSYCLUniqueStableNameExpr()
1792 Context.getTargetAddressSpace(CGF.CGM.GetGlobalConstantAddressSpace()); in VisitSYCLUniqueStableNameExpr()
1810 Value *LHS = CGF.EmitScalarExpr(E->getExpr(0)); in VisitShuffleVectorExpr()
1811 Value *RHS = CGF.EmitScalarExpr(E->getExpr(1)); in VisitShuffleVectorExpr()
1836 Value *IIndx = llvm::ConstantInt::get(CGF.SizeTy, i); in VisitShuffleVectorExpr()
1845 Value* V1 = CGF.EmitScalarExpr(E->getExpr(0)); in VisitShuffleVectorExpr()
1846 Value* V2 = CGF.EmitScalarExpr(E->getExpr(1)); in VisitShuffleVectorExpr()
1850 llvm::APSInt Idx = E->getShuffleMaskIdx(CGF.getContext(), i-2); in VisitShuffleVectorExpr()
1865 Value *Src = CGF.EmitScalarExpr(E->getSrcExpr()); in VisitConvertVectorExpr()
1867 SrcType = CGF.getContext().getCanonicalType(SrcType); in VisitConvertVectorExpr()
1868 DstType = CGF.getContext().getCanonicalType(DstType); in VisitConvertVectorExpr()
1936 if (CodeGenFunction::ConstantEmission Constant = CGF.tryEmitAsConstant(E)) { in VisitMemberExpr()
1937 CGF.EmitIgnoredExpr(E->getBase()); in VisitMemberExpr()
1938 return CGF.emitScalarConstant(Constant, E); in VisitMemberExpr()
1941 if (E->EvaluateAsInt(Result, CGF.getContext(), Expr::SE_AllowSideEffects)) { in VisitMemberExpr()
1943 CGF.EmitIgnoredExpr(E->getBase()); in VisitMemberExpr()
1953 if (CGF.CGM.getCodeGenOpts().DebugInfoForProfiling && CGF.getDebugInfo()) { in VisitMemberExpr()
1961 Ty = CGF.getContext().getPointerType(Ty); in VisitMemberExpr()
1962 CGF.getDebugInfo()->EmitPseudoVariable(Builder, Pointer, Ty); in VisitMemberExpr()
1987 if (CGF.SanOpts.has(SanitizerKind::ArrayBounds)) in VisitArraySubscriptExpr()
1988 CGF.EmitBoundsCheck(E, E->getBase(), Idx, IdxTy, /*Accessed*/true); in VisitArraySubscriptExpr()
2005 if (CGF.CGM.getCodeGenOpts().OptimizationLevel > 0) in VisitMatrixSubscriptExpr()
2035 CGF.ErrorUnsupported(E, "GNU array range designator extension"); in VisitInitListExpr()
2097 Args.push_back(getAsInt32(C, CGF.Int32Ty)); in VisitInitListExpr()
2226 CodeGenFunction::CGFPOptionsRAII FPOptions(CGF, CE); in VisitCastExpr()
2243 Addr = Addr.withElementType(CGF.ConvertTypeForMem(DestTy)); in VisitCastExpr()
2244 LValue LV = CGF.MakeAddrLValue(Addr, DestTy); in VisitCastExpr()
2249 LValue SourceLVal = CGF.EmitLValue(E); in VisitCastExpr()
2251 SourceLVal.getAddress().withElementType(CGF.ConvertTypeForMem(DestTy)); in VisitCastExpr()
2252 LValue DestLV = CGF.MakeAddrLValue(Addr, DestTy); in VisitCastExpr()
2269 if (CGF.SanOpts.has(SanitizerKind::CFIUnrelatedCast)) { in VisitCastExpr()
2271 CGF.EmitVTablePtrCheckForCast( in VisitCastExpr()
2274 CGF.ConvertTypeForMem( in VisitCastExpr()
2276 CGF.getPointerAlign()), in VisitCastExpr()
2282 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers) { in VisitCastExpr()
2306 CGF.getDebugInfo()->addHeapAllocSiteMetadata(CI, PointeeType, in VisitCastExpr()
2327 llvm::Value *Zero = llvm::Constant::getNullValue(CGF.CGM.Int64Ty); in VisitCastExpr()
2353 llvm::Value *Zero = llvm::Constant::getNullValue(CGF.CGM.Int64Ty); in VisitCastExpr()
2369 Address Addr = CGF.CreateDefaultAlignTempAlloca(SrcTy, "saved-value"); in VisitCastExpr()
2370 LValue LV = CGF.MakeAddrLValue(Addr, E->getType()); in VisitCastExpr()
2371 CGF.EmitStoreOfScalar(Src, LV); in VisitCastExpr()
2372 Addr = Addr.withElementType(CGF.ConvertTypeForMem(DestTy)); in VisitCastExpr()
2373 LValue DestLV = CGF.MakeAddrLValue(Addr, DestTy); in VisitCastExpr()
2379 return CGF.authPointerToPointerCast(Result, E->getType(), DestTy); in VisitCastExpr()
2383 if (E->EvaluateAsRValue(Result, CGF.getContext()) && in VisitCastExpr()
2390 return CGF.CGM.getNullPointer(cast<llvm::PointerType>( in VisitCastExpr()
2395 return CGF.CGM.getTargetCodeGenInfo().performAddrSpaceCast( in VisitCastExpr()
2396 CGF, Visit(E), E->getType()->getPointeeType().getAddressSpace(), in VisitCastExpr()
2413 Address Base = CGF.EmitPointerWithAlignment(E); in VisitCastExpr()
2415 CGF.GetAddressOfDerivedClass(Base, DerivedClassDecl, in VisitCastExpr()
2417 CGF.ShouldNullCheckClassCastValue(CE)); in VisitCastExpr()
2421 if (CGF.sanitizePerformTypeCheck()) in VisitCastExpr()
2422 CGF.EmitTypeCheck(CodeGenFunction::TCK_DowncastPointer, CE->getExprLoc(), in VisitCastExpr()
2425 if (CGF.SanOpts.has(SanitizerKind::CFIDerivedCast)) in VisitCastExpr()
2426 CGF.EmitVTablePtrCheckForCast(DestTy->getPointeeType(), Derived, in VisitCastExpr()
2431 return CGF.getAsNaturalPointerTo(Derived, CE->getType()->getPointeeType()); in VisitCastExpr()
2437 return CGF.getAsNaturalPointerTo(CGF.EmitPointerWithAlignment(CE), in VisitCastExpr()
2442 Address V = CGF.EmitPointerWithAlignment(E); in VisitCastExpr()
2444 return CGF.EmitDynamicCast(V, DCE); in VisitCastExpr()
2448 return CGF.getAsNaturalPointerTo(CGF.EmitArrayToPointerDecay(E), in VisitCastExpr()
2451 return EmitLValue(E).getPointer(CGF); in VisitCastExpr()
2455 CGF.EmitIgnoredExpr(E); in VisitCastExpr()
2457 return CGF.CGM.getNullPointer(cast<llvm::PointerType>(ConvertType(DestTy)), in VisitCastExpr()
2462 CGF.EmitIgnoredExpr(E); in VisitCastExpr()
2465 return CGF.CGM.getCXXABI().EmitNullMemberPointer(MPT); in VisitCastExpr()
2479 return CGF.CGM.getCXXABI().EmitMemberPointerConversion(CGF, CE, Src); in VisitCastExpr()
2483 return CGF.EmitARCRetainScalarExpr(E); in VisitCastExpr()
2485 return CGF.EmitObjCConsumeObject(E->getType(), Visit(E)); in VisitCastExpr()
2487 return CGF.EmitARCReclaimReturnedObject(E, /*allowUnsafe*/ Ignored); in VisitCastExpr()
2489 return CGF.EmitARCExtendBlockObject(E); in VisitCastExpr()
2492 return CGF.EmitBlockCopyAndAutorelease(Visit(E), E->getType()); in VisitCastExpr()
2506 assert(CGF.getContext().hasSameUnqualifiedType(E->getType(), DestTy)); in VisitCastExpr()
2516 llvm::Type *MiddleTy = CGF.CGM.getDataLayout().getIntPtrType(DestLLVMTy); in VisitCastExpr()
2523 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers) { in VisitCastExpr()
2530 IntToPtr = CGF.authPointerToPointerCast(IntToPtr, E->getType(), DestTy); in VisitCastExpr()
2537 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers) { in VisitCastExpr()
2546 PtrExpr = CGF.authPointerToPointerCast(PtrExpr, E->getType(), DestTy); in VisitCastExpr()
2550 CGF.EmitIgnoredExpr(E); in VisitCastExpr()
2602 Opts = ScalarConversionOpts(CGF.SanOpts); in VisitCastExpr()
2615 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, CE); in VisitCastExpr()
2627 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, CE); in VisitCastExpr()
2641 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, CE); in VisitCastExpr()
2647 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, CE); in VisitCastExpr()
2662 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, CE); in VisitCastExpr()
2668 return CGF.CGM.getCXXABI().EmitMemberPointerIsNotNull(CGF, MemPtr, MPT); in VisitCastExpr()
2673 return CGF.EmitComplexExpr(E, false, true).first; in VisitCastExpr()
2677 CodeGenFunction::ComplexPairTy V = CGF.EmitComplexExpr(E); in VisitCastExpr()
2692 return CGF.CGM.createOpenCLIntToSamplerConversion(E, CGF); in VisitCastExpr()
2711 CodeGenFunction::StmtExprEvaluation eval(CGF); in VisitStmtExpr()
2712 Address RetAlloca = CGF.EmitCompoundStmt(*E->getSubStmt(), in VisitStmtExpr()
2716 return CGF.EmitLoadOfScalar(CGF.MakeAddrLValue(RetAlloca, E->getType()), in VisitStmtExpr()
2721 CodeGenFunction::RunCleanupsScope Scope(CGF); in VisitExprWithCleanups()
2751 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitIncDecConsiderOverflowBehavior()
2753 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitIncDecConsiderOverflowBehavior()
2757 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitIncDecConsiderOverflowBehavior()
2764 E, InVal, IsInc, E->getFPFeaturesInEffect(CGF.getLangOpts()))); in EmitIncDecConsiderOverflowBehavior()
2773 CodeGenFunction &CGF; member in __anone7cacfbd0211::OMPLastprivateConditionalUpdateRAII
2777 OMPLastprivateConditionalUpdateRAII(CodeGenFunction &CGF, in OMPLastprivateConditionalUpdateRAII() argument
2779 : CGF(CGF), E(E) {} in OMPLastprivateConditionalUpdateRAII()
2781 if (CGF.getLangOpts().OpenMP) in ~OMPLastprivateConditionalUpdateRAII()
2782 CGF.CGM.getOpenMPRuntime().checkAndEmitLastprivateConditional( in ~OMPLastprivateConditionalUpdateRAII()
2783 CGF, E->getSubExpr()); in ~OMPLastprivateConditionalUpdateRAII()
2791 OMPLastprivateConditionalUpdateRAII OMPRegion(CGF, E); in EmitScalarPrePostIncDec()
2805 llvm::Value *True = CGF.EmitToMemory(Builder.getTrue(), type); in EmitScalarPrePostIncDec()
2822 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow)) && in EmitScalarPrePostIncDec()
2823 CGF.getLangOpts().getSignedOverflowBehavior() != in EmitScalarPrePostIncDec()
2829 llvm::Value *amt = CGF.EmitToMemory( in EmitScalarPrePostIncDec()
2857 llvm::BasicBlock *opBB = CGF.createBasicBlock("atomic_op", CGF.CurFn); in EmitScalarPrePostIncDec()
2858 value = CGF.EmitToMemory(value, type); in EmitScalarPrePostIncDec()
2883 if (CGF.getContext().isPromotableIntegerType(type)) { in EmitScalarPrePostIncDec()
2884 promotedType = CGF.getContext().getPromotedIntegerType(type); in EmitScalarPrePostIncDec()
2888 CGF.getContext().getCanonicalType(type) != in EmitScalarPrePostIncDec()
2889 CGF.getContext().getCanonicalType(promotedType); in EmitScalarPrePostIncDec()
2902 if (CGF.SanOpts.hasOneOf( in EmitScalarPrePostIncDec()
2927 Opts = ScalarConversionOpts(CGF.SanOpts); in EmitScalarPrePostIncDec()
2928 else if (CGF.SanOpts.has(SanitizerKind::ImplicitBitfieldConversion)) { in EmitScalarPrePostIncDec()
2942 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow)) { in EmitScalarPrePostIncDec()
2944 E, value, isInc, E->getFPFeaturesInEffect(CGF.getLangOpts()))); in EmitScalarPrePostIncDec()
2956 = CGF.getContext().getAsVariableArrayType(type)) { in EmitScalarPrePostIncDec()
2957 llvm::Value *numElts = CGF.getVLASize(vla).NumElts; in EmitScalarPrePostIncDec()
2959 llvm::Type *elemTy = CGF.ConvertTypeForMem(vla->getElementType()); in EmitScalarPrePostIncDec()
2960 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
2963 value = CGF.EmitCheckedInBoundsGEP( in EmitScalarPrePostIncDec()
2971 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
2972 value = Builder.CreateGEP(CGF.Int8Ty, value, amt, "incdec.funcptr"); in EmitScalarPrePostIncDec()
2975 CGF.EmitCheckedInBoundsGEP(CGF.Int8Ty, value, amt, in EmitScalarPrePostIncDec()
2982 llvm::Type *elemTy = CGF.ConvertTypeForMem(type); in EmitScalarPrePostIncDec()
2983 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
2986 value = CGF.EmitCheckedInBoundsGEP( in EmitScalarPrePostIncDec()
3008 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, E); in EmitScalarPrePostIncDec()
3010 if (type->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarPrePostIncDec()
3012 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarPrePostIncDec()
3014 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16, in EmitScalarPrePostIncDec()
3015 CGF.CGM.FloatTy), in EmitScalarPrePostIncDec()
3018 value = Builder.CreateFPExt(input, CGF.CGM.FloatTy, "incdec.conv"); in EmitScalarPrePostIncDec()
3037 FS = &CGF.getTarget().getFloat128Format(); in EmitScalarPrePostIncDec()
3039 FS = &CGF.getTarget().getHalfFormat(); in EmitScalarPrePostIncDec()
3041 FS = &CGF.getTarget().getBFloat16Format(); in EmitScalarPrePostIncDec()
3043 FS = &CGF.getTarget().getIbm128Format(); in EmitScalarPrePostIncDec()
3045 FS = &CGF.getTarget().getLongDoubleFormat(); in EmitScalarPrePostIncDec()
3051 if (type->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarPrePostIncDec()
3052 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarPrePostIncDec()
3054 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16, in EmitScalarPrePostIncDec()
3055 CGF.CGM.FloatTy), in EmitScalarPrePostIncDec()
3083 auto DstSema = CGF.getContext().getFixedPointSemantics(Info.Ty); in EmitScalarPrePostIncDec()
3091 CharUnits size = CGF.getContext().getTypeSizeInChars(OPT->getObjectType()); in EmitScalarPrePostIncDec()
3094 llvm::ConstantInt::get(CGF.SizeTy, size.getQuantity()); in EmitScalarPrePostIncDec()
3096 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
3097 value = Builder.CreateGEP(CGF.Int8Ty, value, sizeValue, "incdec.objptr"); in EmitScalarPrePostIncDec()
3099 value = CGF.EmitCheckedInBoundsGEP( in EmitScalarPrePostIncDec()
3100 CGF.Int8Ty, value, sizeValue, /*SignedIndices=*/false, isSubtraction, in EmitScalarPrePostIncDec()
3107 llvm::BasicBlock *contBB = CGF.createBasicBlock("atomic_cont", CGF.CurFn); in EmitScalarPrePostIncDec()
3108 auto Pair = CGF.EmitAtomicCompareExchange( in EmitScalarPrePostIncDec()
3110 llvm::Value *old = CGF.EmitToMemory(Pair.first.getScalarVal(), type); in EmitScalarPrePostIncDec()
3121 CGF.EmitStoreThroughBitfieldLValue(RValue::get(value), LV, &value); in EmitScalarPrePostIncDec()
3122 CGF.EmitBitfieldConversionCheck(Src, SrcType, value, E->getType(), in EmitScalarPrePostIncDec()
3125 CGF.EmitStoreThroughLValue(RValue::get(value), LV); in EmitScalarPrePostIncDec()
3149 return CGF.EmitPromotedScalarExpr(E->getSubExpr(), PromotionType); in VisitPlus()
3169 Op = CGF.EmitPromotedScalarExpr(E->getSubExpr(), PromotionType); in VisitMinus()
3183 BinOp.FPFeatures = E->getFPFeaturesInEffect(CGF.getLangOpts()); in VisitMinus()
3204 CGF, E->getFPFeaturesInEffect(CGF.getLangOpts())); in VisitUnaryLNot()
3212 Value *BoolVal = CGF.EvaluateExprAsBool(E->getSubExpr()); in VisitUnaryLNot()
3226 if (E->EvaluateAsInt(EVResult, CGF.getContext())) { in VisitOffsetOfExpr()
3243 llvm::Value* Idx = CGF.EmitScalarExpr(IdxExpr); in VisitOffsetOfExpr()
3249 CGF.getContext().getAsArrayType(CurrentType)->getElementType(); in VisitOffsetOfExpr()
3253 CGF.getContext().getTypeSizeInChars(CurrentType).getQuantity()); in VisitOffsetOfExpr()
3263 const ASTRecordLayout &RL = CGF.getContext().getASTRecordLayout(RD); in VisitOffsetOfExpr()
3278 CGF.getContext().getCharWidth(); in VisitOffsetOfExpr()
3291 CGF.ErrorUnsupported(E, "virtual base in offsetof"); in VisitOffsetOfExpr()
3296 const ASTRecordLayout &RL = CGF.getContext().getASTRecordLayout(RD); in VisitOffsetOfExpr()
3323 CGF.getContext().getAsVariableArrayType(TypeToSize)) { in VisitUnaryExprOrTypeTraitExpr()
3326 CGF.EmitVariablyModifiedType(TypeToSize); in VisitUnaryExprOrTypeTraitExpr()
3330 CGF.EmitIgnoredExpr(E->getArgumentExpr()); in VisitUnaryExprOrTypeTraitExpr()
3333 auto VlaSize = CGF.getVLASize(VAT); in VisitUnaryExprOrTypeTraitExpr()
3337 CharUnits eltSize = CGF.getContext().getTypeSizeInChars(VlaSize.Type); in VisitUnaryExprOrTypeTraitExpr()
3339 size = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), size); in VisitUnaryExprOrTypeTraitExpr()
3345 CGF.getContext() in VisitUnaryExprOrTypeTraitExpr()
3346 .toCharUnitsFromBits(CGF.getContext().getOpenMPDefaultSimdAlign( in VisitUnaryExprOrTypeTraitExpr()
3349 return llvm::ConstantInt::get(CGF.SizeTy, Alignment); in VisitUnaryExprOrTypeTraitExpr()
3352 return Builder.CreateElementCount(CGF.SizeTy, VecTy->getElementCount()); in VisitUnaryExprOrTypeTraitExpr()
3357 return Builder.getInt(E->EvaluateKnownConstInt(CGF.getContext())); in VisitUnaryExprOrTypeTraitExpr()
3380 CodeGenFunction::ComplexPairTy result = CGF.EmitComplexExpr( in VisitReal()
3383 result.first = CGF.EmitPromotedValue(result, PromotionType).first; in VisitReal()
3386 return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc()) in VisitReal()
3391 return CGF.EmitComplexExpr(Op, false, true).first; in VisitReal()
3395 return CGF.EmitPromotedScalarExpr(Op, PromotionType); in VisitReal()
3419 CodeGenFunction::ComplexPairTy result = CGF.EmitComplexExpr( in VisitImag()
3422 result.second = CGF.EmitPromotedValue(result, PromotionType).second; in VisitImag()
3425 return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc()) in VisitImag()
3430 return CGF.EmitComplexExpr(Op, true, false).second; in VisitImag()
3436 CGF.EmitLValue(Op); in VisitImag()
3438 CGF.EmitPromotedScalarExpr(Op, PromotionType); in VisitImag()
3440 CGF.EmitScalarExpr(Op, true); in VisitImag()
3452 return CGF.Builder.CreateFPExt(result, ConvertType(PromotionType), "ext"); in EmitPromotedValue()
3457 return CGF.Builder.CreateFPTrunc(result, ConvertType(ExprType), "unpromotion"); in EmitUnPromotedValue()
3503 Result.LHS = CGF.EmitPromotedScalarExpr(E->getLHS(), PromotionType); in EmitBinOps()
3504 Result.RHS = CGF.EmitPromotedScalarExpr(E->getRHS(), PromotionType); in EmitBinOps()
3510 Result.FPFeatures = E->getFPFeaturesInEffect(CGF.getLangOpts()); in EmitBinOps()
3523 return CGF.EmitScalarCompoundAssignWithComplex(E, Result); in EmitCompoundAssignLValue()
3535 OpInfo.RHS = CGF.EmitPromotedScalarExpr(E->getRHS(), PromotionTypeRHS); in EmitCompoundAssignLValue()
3540 OpInfo.FPFeatures = E->getFPFeaturesInEffect(CGF.getLangOpts()); in EmitCompoundAssignLValue()
3550 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow)) && in EmitCompoundAssignLValue()
3551 CGF.getLangOpts().getSignedOverflowBehavior() != in EmitCompoundAssignLValue()
3586 llvm::Value *Amt = CGF.EmitToMemory( in EmitCompoundAssignLValue()
3603 llvm::BasicBlock *opBB = CGF.createBasicBlock("atomic_op", CGF.CurFn); in EmitCompoundAssignLValue()
3605 OpInfo.LHS = CGF.EmitToMemory(OpInfo.LHS, type); in EmitCompoundAssignLValue()
3615 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, OpInfo.FPFeatures); in EmitCompoundAssignLValue()
3637 ScalarConversionOpts(CGF.SanOpts)); in EmitCompoundAssignLValue()
3641 llvm::BasicBlock *contBB = CGF.createBasicBlock("atomic_cont", CGF.CurFn); in EmitCompoundAssignLValue()
3642 auto Pair = CGF.EmitAtomicCompareExchange( in EmitCompoundAssignLValue()
3644 llvm::Value *old = CGF.EmitToMemory(Pair.first.getScalarVal(), LHSTy); in EmitCompoundAssignLValue()
3660 CGF.EmitStoreThroughBitfieldLValue(RValue::get(Result), LHSLV, &Result); in EmitCompoundAssignLValue()
3661 CGF.EmitBitfieldConversionCheck(Src, SrcType, Result, DstType, in EmitCompoundAssignLValue()
3664 CGF.EmitStoreThroughLValue(RValue::get(Result), LHSLV); in EmitCompoundAssignLValue()
3666 if (CGF.getLangOpts().OpenMP) in EmitCompoundAssignLValue()
3667 CGF.CGM.getOpenMPRuntime().checkAndEmitLastprivateConditional(CGF, in EmitCompoundAssignLValue()
3683 if (!CGF.getLangOpts().CPlusPlus) in EmitCompoundAssign()
3698 if (CGF.SanOpts.has(SanitizerKind::IntegerDivideByZero)) { in EmitUndefinedBehaviorIntegerDivAndRemCheck()
3704 if (CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow) && in EmitUndefinedBehaviorIntegerDivAndRemCheck()
3706 !IsWidenedIntegerOp(CGF.getContext(), BO->getLHS()) && in EmitUndefinedBehaviorIntegerDivAndRemCheck()
3727 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitDiv()
3728 if ((CGF.SanOpts.has(SanitizerKind::IntegerDivideByZero) || in EmitDiv()
3729 CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) && in EmitDiv()
3734 } else if (CGF.SanOpts.has(SanitizerKind::FloatDivideByZero) && in EmitDiv()
3755 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Ops.FPFeatures); in EmitDiv()
3762 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Ops.FPFeatures); in EmitDiv()
3764 CGF.SetDivFPAccuracy(Val); in EmitDiv()
3777 if ((CGF.SanOpts.has(SanitizerKind::IntegerDivideByZero) || in EmitRem()
3778 CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) && in EmitRem()
3781 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitRem()
3827 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitOverflowCheckedBinOp()
3828 llvm::Type *opTy = CGF.CGM.getTypes().ConvertType(Ops.Ty); in EmitOverflowCheckedBinOp()
3830 llvm::Function *intrinsic = CGF.CGM.getIntrinsic(IID, opTy); in EmitOverflowCheckedBinOp()
3838 &CGF.getLangOpts().OverflowHandler; in EmitOverflowCheckedBinOp()
3842 if (!isSigned || CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) { in EmitOverflowCheckedBinOp()
3848 CGF.EmitTrapCheck(Builder.CreateNot(overflow), OverflowKind); in EmitOverflowCheckedBinOp()
3855 CGF.createBasicBlock("nooverflow", CGF.CurFn, initialBB->getNextNode()); in EmitOverflowCheckedBinOp()
3856 llvm::BasicBlock *overflowBB = CGF.createBasicBlock("overflow", CGF.CurFn); in EmitOverflowCheckedBinOp()
3865 llvm::Type *Int8Ty = CGF.Int8Ty; in EmitOverflowCheckedBinOp()
3866 llvm::Type *argTypes[] = { CGF.Int64Ty, CGF.Int64Ty, Int8Ty, Int8Ty }; in EmitOverflowCheckedBinOp()
3868 llvm::FunctionType::get(CGF.Int64Ty, argTypes, true); in EmitOverflowCheckedBinOp()
3870 CGF.CGM.CreateRuntimeFunction(handlerTy, *handlerName); in EmitOverflowCheckedBinOp()
3874 llvm::Value *lhs = Builder.CreateSExt(Ops.LHS, CGF.Int64Ty); in EmitOverflowCheckedBinOp()
3875 llvm::Value *rhs = Builder.CreateSExt(Ops.RHS, CGF.Int64Ty); in EmitOverflowCheckedBinOp()
3886 CGF.EmitNounwindRuntimeCall(handler, handlerArgs); in EmitOverflowCheckedBinOp()
3901 static Value *emitPointerArithmetic(CodeGenFunction &CGF, in emitPointerArithmetic() argument
3922 auto &DL = CGF.CGM.getDataLayout(); in emitPointerArithmetic()
3942 if (BinaryOperator::isNullPointerArithmeticExtension(CGF.getContext(), in emitPointerArithmetic()
3946 return CGF.Builder.CreateIntToPtr(index, pointer->getType()); in emitPointerArithmetic()
3951 index = CGF.Builder.CreateIntCast(index, DL.getIndexType(PtrTy), isSigned, in emitPointerArithmetic()
3957 index = CGF.Builder.CreateNeg(index, "idx.neg"); in emitPointerArithmetic()
3959 if (CGF.SanOpts.has(SanitizerKind::ArrayBounds)) in emitPointerArithmetic()
3960 CGF.EmitBoundsCheck(op.E, pointerOperand, index, indexOperand->getType(), in emitPointerArithmetic()
3970 = CGF.CGM.getSize(CGF.getContext().getTypeSizeInChars(objectType)); in emitPointerArithmetic()
3972 index = CGF.Builder.CreateMul(index, objectSize); in emitPointerArithmetic()
3975 CGF.Builder.CreateGEP(CGF.Int8Ty, pointer, index, "add.ptr"); in emitPointerArithmetic()
3976 return CGF.Builder.CreateBitCast(result, pointer->getType()); in emitPointerArithmetic()
3981 = CGF.getContext().getAsVariableArrayType(elementType)) { in emitPointerArithmetic()
3983 llvm::Value *numElements = CGF.getVLASize(vla).NumElts; in emitPointerArithmetic()
3989 llvm::Type *elemTy = CGF.ConvertTypeForMem(vla->getElementType()); in emitPointerArithmetic()
3990 if (CGF.getLangOpts().isSignedOverflowDefined()) { in emitPointerArithmetic()
3991 index = CGF.Builder.CreateMul(index, numElements, "vla.index"); in emitPointerArithmetic()
3992 pointer = CGF.Builder.CreateGEP(elemTy, pointer, index, "add.ptr"); in emitPointerArithmetic()
3994 index = CGF.Builder.CreateNSWMul(index, numElements, "vla.index"); in emitPointerArithmetic()
3995 pointer = CGF.EmitCheckedInBoundsGEP( in emitPointerArithmetic()
4007 elemTy = CGF.Int8Ty; in emitPointerArithmetic()
4009 elemTy = CGF.ConvertTypeForMem(elementType); in emitPointerArithmetic()
4011 if (CGF.getLangOpts().isSignedOverflowDefined()) in emitPointerArithmetic()
4012 return CGF.Builder.CreateGEP(elemTy, pointer, index, "add.ptr"); in emitPointerArithmetic()
4014 return CGF.EmitCheckedInBoundsGEP( in emitPointerArithmetic()
4025 const CodeGenFunction &CGF, CGBuilderTy &Builder, in buildFMulAdd() argument
4040 CGF.CGM.getIntrinsic(llvm::Intrinsic::experimental_constrained_fmuladd, in buildFMulAdd()
4045 CGF.CGM.getIntrinsic(llvm::Intrinsic::fmuladd, Addend->getType()), in buildFMulAdd()
4060 const CodeGenFunction &CGF, CGBuilderTy &Builder, in tryEmitFMulAdd() argument
4103 return buildFMulAdd(LHSBinOp, op.RHS, CGF, Builder, NegLHS, isSub); in tryEmitFMulAdd()
4112 return buildFMulAdd(RHSBinOp, op.LHS, CGF, Builder, isSub ^ NegRHS, false); in tryEmitFMulAdd()
4123 return buildFMulAdd(LHSBinOp, op.RHS, CGF, Builder, NegLHS, isSub); in tryEmitFMulAdd()
4133 return buildFMulAdd(RHSBinOp, op.LHS, CGF, Builder, isSub ^ NegRHS, false); in tryEmitFMulAdd()
4143 return emitPointerArithmetic(CGF, op, CodeGenFunction::NotSubtraction); in EmitAdd()
4146 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitAdd()
4148 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitAdd()
4152 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitAdd()
4156 if (CanElideOverflowCheck(CGF.getContext(), op)) in EmitAdd()
4164 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, op.FPFeatures); in EmitAdd()
4166 if (Value *FMulAdd = tryEmitFMulAdd(op, CGF, Builder)) in EmitAdd()
4172 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, op.FPFeatures); in EmitAdd()
4177 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow) && in EmitAdd()
4178 !CanElideOverflowCheck(CGF.getContext(), op)) in EmitAdd()
4182 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, op.FPFeatures); in EmitAdd()
4219 ASTContext &Ctx = CGF.getContext(); in EmitFixedPointBinOp()
4302 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitSub()
4304 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitSub()
4308 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitSub()
4312 if (CanElideOverflowCheck(CGF.getContext(), op)) in EmitSub()
4320 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, op.FPFeatures); in EmitSub()
4322 if (Value *FMulAdd = tryEmitFMulAdd(op, CGF, Builder, true)) in EmitSub()
4328 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, op.FPFeatures); in EmitSub()
4333 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow) && in EmitSub()
4334 !CanElideOverflowCheck(CGF.getContext(), op)) in EmitSub()
4338 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, op.FPFeatures); in EmitSub()
4351 return emitPointerArithmetic(CGF, op, CodeGenFunction::IsSubtraction); in EmitSub()
4357 = Builder.CreatePtrToInt(op.LHS, CGF.PtrDiffTy, "sub.ptr.lhs.cast"); in EmitSub()
4359 = Builder.CreatePtrToInt(op.RHS, CGF.PtrDiffTy, "sub.ptr.rhs.cast"); in EmitSub()
4370 = CGF.getContext().getAsVariableArrayType(elementType)) { in EmitSub()
4371 auto VlaSize = CGF.getVLASize(vla); in EmitSub()
4376 CharUnits eltSize = CGF.getContext().getTypeSizeInChars(elementType); in EmitSub()
4378 divisor = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), divisor); in EmitSub()
4390 elementSize = CGF.getContext().getTypeSizeInChars(elementType); in EmitSub()
4396 divisor = CGF.CGM.getSize(elementSize); in EmitSub()
4451 bool SanitizeSignedBase = CGF.SanOpts.has(SanitizerKind::ShiftBase) && in EmitShl()
4453 !CGF.getLangOpts().isSignedOverflowDefined() && in EmitShl()
4454 !CGF.getLangOpts().CPlusPlus20; in EmitShl()
4456 CGF.SanOpts.has(SanitizerKind::UnsignedShiftBase) && in EmitShl()
4459 bool SanitizeExponent = CGF.SanOpts.has(SanitizerKind::ShiftExponent); in EmitShl()
4461 if (CGF.getLangOpts().OpenCL || CGF.getLangOpts().HLSL) in EmitShl()
4465 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitShl()
4482 llvm::BasicBlock *Cont = CGF.createBasicBlock("cont"); in EmitShl()
4483 llvm::BasicBlock *CheckShiftBase = CGF.createBasicBlock("check"); in EmitShl()
4488 CGF.EmitBlock(CheckShiftBase); in EmitShl()
4493 if (SanitizeUnsignedBase || CGF.getLangOpts().CPlusPlus) { in EmitShl()
4504 CGF.EmitBlock(Cont); in EmitShl()
4532 if (CGF.getLangOpts().OpenCL || CGF.getLangOpts().HLSL) in EmitShr()
4534 else if (CGF.SanOpts.has(SanitizerKind::ShiftExponent) && in EmitShr()
4536 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitShr()
4609 Value *LHS = CGF.EmitScalarExpr(E->getLHS()); in EmitCompare()
4610 Value *RHS = CGF.EmitScalarExpr(E->getRHS()); in EmitCompare()
4611 Result = CGF.CGM.getCXXABI().EmitMemberPointerComparison( in EmitCompare()
4612 CGF, LHS, RHS, MPT, E->getOpcode() == BO_NE); in EmitCompare()
4677 llvm::Function *F = CGF.CGM.getIntrinsic(ID); in EmitCompare()
4687 E->getType() == CGF.getContext().BoolTy) in EmitCompare()
4689 return EmitScalarConversion(Result, CGF.getContext().BoolTy, E->getType(), in EmitCompare()
4696 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, BOInfo.FPFeatures); in EmitCompare()
4706 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers && in EmitCompare()
4735 LHS = CGF.EmitComplexExpr(E->getLHS()); in EmitCompare()
4743 RHS = CGF.EmitComplexExpr(E->getRHS()); in EmitCompare()
4744 assert(CGF.getContext().hasSameUnqualifiedType(CETy, in EmitCompare()
4751 assert(CGF.getContext().hasSameUnqualifiedType(CETy, RHSTy) && in EmitCompare()
4777 return EmitScalarConversion(Result, CGF.getContext().BoolTy, E->getType(), in EmitCompare()
4807 std::tie(LHS, RHS) = CGF.EmitARCStoreStrong(E, Ignore); in VisitBinAssign()
4811 std::tie(LHS, RHS) = CGF.EmitARCStoreAutoreleasing(E); in VisitBinAssign()
4815 std::tie(LHS, RHS) = CGF.EmitARCStoreUnsafeUnretained(E, Ignore); in VisitBinAssign()
4821 RHS = CGF.EmitARCStoreWeak(LHS.getAddress(), RHS, Ignore); in VisitBinAssign()
4833 RHS = CGF.EmitWithOriginalRHSBitfieldAssignment(E, &Previous, &SrcType); in VisitBinAssign()
4844 CGF.EmitStoreThroughBitfieldLValue(RValue::get(RHS), LHS, &RHS); in VisitBinAssign()
4849 CGF.EmitBitfieldConversionCheck(Src, SrcType, RHS, DstType, in VisitBinAssign()
4852 CGF.EmitNullabilityCheck(LHS, RHS, E->getExprLoc()); in VisitBinAssign()
4853 CGF.EmitStoreThroughLValue(RValue::get(RHS), LHS); in VisitBinAssign()
4862 if (!CGF.getLangOpts().CPlusPlus) in VisitBinAssign()
4876 CGF.incrementProfileCounter(E); in VisitBinLAnd()
4883 CGF, E->getFPFeaturesInEffect(CGF.getLangOpts())); in VisitBinLAnd()
4894 bool InstrumentRegions = CGF.CGM.getCodeGenOpts().hasProfileClangInstr(); in VisitBinLAnd()
4900 if (CGF.ConstantFoldsToSimpleInteger(E->getLHS(), LHSCondVal)) { in VisitBinLAnd()
4902 CGF.incrementProfileCounter(E); in VisitBinLAnd()
4905 if (CGF.MCDCLogOpStack.empty()) in VisitBinLAnd()
4906 CGF.maybeResetMCDCCondBitmap(E); in VisitBinLAnd()
4908 CGF.MCDCLogOpStack.push_back(E); in VisitBinLAnd()
4910 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLAnd()
4918 CGF.maybeUpdateMCDCCondBitmap(E->getRHS(), RHSCond); in VisitBinLAnd()
4919 llvm::BasicBlock *FBlock = CGF.createBasicBlock("land.end"); in VisitBinLAnd()
4920 llvm::BasicBlock *RHSBlockCnt = CGF.createBasicBlock("land.rhscnt"); in VisitBinLAnd()
4922 CGF.EmitBlock(RHSBlockCnt); in VisitBinLAnd()
4923 CGF.incrementProfileCounter(E->getRHS()); in VisitBinLAnd()
4924 CGF.EmitBranch(FBlock); in VisitBinLAnd()
4925 CGF.EmitBlock(FBlock); in VisitBinLAnd()
4928 CGF.MCDCLogOpStack.pop_back(); in VisitBinLAnd()
4930 if (CGF.MCDCLogOpStack.empty()) in VisitBinLAnd()
4931 CGF.maybeUpdateMCDCTestVectorBitmap(E); in VisitBinLAnd()
4938 if (!CGF.ContainsLabel(E->getRHS())) in VisitBinLAnd()
4943 if (CGF.MCDCLogOpStack.empty()) in VisitBinLAnd()
4944 CGF.maybeResetMCDCCondBitmap(E); in VisitBinLAnd()
4946 CGF.MCDCLogOpStack.push_back(E); in VisitBinLAnd()
4948 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("land.end"); in VisitBinLAnd()
4949 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("land.rhs"); in VisitBinLAnd()
4951 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitBinLAnd()
4954 CGF.EmitBranchOnBoolExpr(E->getLHS(), RHSBlock, ContBlock, in VisitBinLAnd()
4955 CGF.getProfileCount(E->getRHS())); in VisitBinLAnd()
4966 eval.begin(CGF); in VisitBinLAnd()
4967 CGF.EmitBlock(RHSBlock); in VisitBinLAnd()
4968 CGF.incrementProfileCounter(E); in VisitBinLAnd()
4969 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLAnd()
4970 eval.end(CGF); in VisitBinLAnd()
4980 CGF.maybeUpdateMCDCCondBitmap(E->getRHS(), RHSCond); in VisitBinLAnd()
4981 llvm::BasicBlock *RHSBlockCnt = CGF.createBasicBlock("land.rhscnt"); in VisitBinLAnd()
4983 CGF.EmitBlock(RHSBlockCnt); in VisitBinLAnd()
4984 CGF.incrementProfileCounter(E->getRHS()); in VisitBinLAnd()
4985 CGF.EmitBranch(ContBlock); in VisitBinLAnd()
4992 auto NL = ApplyDebugLocation::CreateEmpty(CGF); in VisitBinLAnd()
4993 CGF.EmitBlock(ContBlock); in VisitBinLAnd()
4998 CGF.MCDCLogOpStack.pop_back(); in VisitBinLAnd()
5000 if (CGF.MCDCLogOpStack.empty()) in VisitBinLAnd()
5001 CGF.maybeUpdateMCDCTestVectorBitmap(E); in VisitBinLAnd()
5005 auto NL = ApplyDebugLocation::CreateArtificial(CGF); in VisitBinLAnd()
5016 CGF.incrementProfileCounter(E); in VisitBinLOr()
5023 CGF, E->getFPFeaturesInEffect(CGF.getLangOpts())); in VisitBinLOr()
5034 bool InstrumentRegions = CGF.CGM.getCodeGenOpts().hasProfileClangInstr(); in VisitBinLOr()
5040 if (CGF.ConstantFoldsToSimpleInteger(E->getLHS(), LHSCondVal)) { in VisitBinLOr()
5042 CGF.incrementProfileCounter(E); in VisitBinLOr()
5045 if (CGF.MCDCLogOpStack.empty()) in VisitBinLOr()
5046 CGF.maybeResetMCDCCondBitmap(E); in VisitBinLOr()
5048 CGF.MCDCLogOpStack.push_back(E); in VisitBinLOr()
5050 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLOr()
5058 CGF.maybeUpdateMCDCCondBitmap(E->getRHS(), RHSCond); in VisitBinLOr()
5059 llvm::BasicBlock *FBlock = CGF.createBasicBlock("lor.end"); in VisitBinLOr()
5060 llvm::BasicBlock *RHSBlockCnt = CGF.createBasicBlock("lor.rhscnt"); in VisitBinLOr()
5062 CGF.EmitBlock(RHSBlockCnt); in VisitBinLOr()
5063 CGF.incrementProfileCounter(E->getRHS()); in VisitBinLOr()
5064 CGF.EmitBranch(FBlock); in VisitBinLOr()
5065 CGF.EmitBlock(FBlock); in VisitBinLOr()
5068 CGF.MCDCLogOpStack.pop_back(); in VisitBinLOr()
5070 if (CGF.MCDCLogOpStack.empty()) in VisitBinLOr()
5071 CGF.maybeUpdateMCDCTestVectorBitmap(E); in VisitBinLOr()
5078 if (!CGF.ContainsLabel(E->getRHS())) in VisitBinLOr()
5083 if (CGF.MCDCLogOpStack.empty()) in VisitBinLOr()
5084 CGF.maybeResetMCDCCondBitmap(E); in VisitBinLOr()
5086 CGF.MCDCLogOpStack.push_back(E); in VisitBinLOr()
5088 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("lor.end"); in VisitBinLOr()
5089 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("lor.rhs"); in VisitBinLOr()
5091 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitBinLOr()
5094 CGF.EmitBranchOnBoolExpr(E->getLHS(), ContBlock, RHSBlock, in VisitBinLOr()
5095 CGF.getCurrentProfileCount() - in VisitBinLOr()
5096 CGF.getProfileCount(E->getRHS())); in VisitBinLOr()
5107 eval.begin(CGF); in VisitBinLOr()
5110 CGF.EmitBlock(RHSBlock); in VisitBinLOr()
5111 CGF.incrementProfileCounter(E); in VisitBinLOr()
5112 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLOr()
5114 eval.end(CGF); in VisitBinLOr()
5124 CGF.maybeUpdateMCDCCondBitmap(E->getRHS(), RHSCond); in VisitBinLOr()
5125 llvm::BasicBlock *RHSBlockCnt = CGF.createBasicBlock("lor.rhscnt"); in VisitBinLOr()
5127 CGF.EmitBlock(RHSBlockCnt); in VisitBinLOr()
5128 CGF.incrementProfileCounter(E->getRHS()); in VisitBinLOr()
5129 CGF.EmitBranch(ContBlock); in VisitBinLOr()
5135 CGF.EmitBlock(ContBlock); in VisitBinLOr()
5138 CGF.MCDCLogOpStack.pop_back(); in VisitBinLOr()
5140 if (CGF.MCDCLogOpStack.empty()) in VisitBinLOr()
5141 CGF.maybeUpdateMCDCTestVectorBitmap(E); in VisitBinLOr()
5148 CGF.EmitIgnoredExpr(E->getLHS()); in VisitBinComma()
5149 CGF.EnsureInsertPoint(); in VisitBinComma()
5162 CodeGenFunction &CGF) { in isCheapEnoughToEvaluateUnconditionally() argument
5164 return E->IgnoreParens()->isEvaluatable(CGF.getContext()); in isCheapEnoughToEvaluateUnconditionally()
5180 CodeGenFunction::OpaqueValueMapping binding(CGF, E); in VisitAbstractConditionalOperator()
5189 if (CGF.ConstantFoldsToSimpleInteger(condExpr, CondExprBool)) { in VisitAbstractConditionalOperator()
5194 if (!CGF.ContainsLabel(dead)) { in VisitAbstractConditionalOperator()
5197 CGF.incrementProfileCounter(lhsExpr); in VisitAbstractConditionalOperator()
5198 CGF.incrementProfileCounter(rhsExpr); in VisitAbstractConditionalOperator()
5200 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
5208 Result = llvm::UndefValue::get(CGF.ConvertType(E->getType())); in VisitAbstractConditionalOperator()
5216 if ((CGF.getLangOpts().OpenCL && condExpr->getType()->isVectorType()) || in VisitAbstractConditionalOperator()
5218 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
5220 llvm::Value *CondV = CGF.EmitScalarExpr(condExpr); in VisitAbstractConditionalOperator()
5258 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
5260 llvm::Value *CondV = CGF.EmitScalarExpr(condExpr); in VisitAbstractConditionalOperator()
5275 if (isCheapEnoughToEvaluateUnconditionally(lhsExpr, CGF) && in VisitAbstractConditionalOperator()
5276 isCheapEnoughToEvaluateUnconditionally(rhsExpr, CGF)) { in VisitAbstractConditionalOperator()
5277 llvm::Value *CondV = CGF.EvaluateExprAsBool(condExpr); in VisitAbstractConditionalOperator()
5278 llvm::Value *StepV = Builder.CreateZExtOrBitCast(CondV, CGF.Int64Ty); in VisitAbstractConditionalOperator()
5281 CGF.incrementProfileCounter(lhsExpr); in VisitAbstractConditionalOperator()
5282 CGF.incrementProfileCounter(rhsExpr); in VisitAbstractConditionalOperator()
5283 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
5285 CGF.incrementProfileCounter(E, StepV); in VisitAbstractConditionalOperator()
5298 if (CGF.MCDCLogOpStack.empty()) in VisitAbstractConditionalOperator()
5299 CGF.maybeResetMCDCCondBitmap(condExpr); in VisitAbstractConditionalOperator()
5301 llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true"); in VisitAbstractConditionalOperator()
5302 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false"); in VisitAbstractConditionalOperator()
5303 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end"); in VisitAbstractConditionalOperator()
5305 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitAbstractConditionalOperator()
5306 CGF.EmitBranchOnBoolExpr(condExpr, LHSBlock, RHSBlock, in VisitAbstractConditionalOperator()
5307 CGF.getProfileCount(lhsExpr)); in VisitAbstractConditionalOperator()
5309 CGF.EmitBlock(LHSBlock); in VisitAbstractConditionalOperator()
5314 if (CGF.MCDCLogOpStack.empty()) in VisitAbstractConditionalOperator()
5315 CGF.maybeUpdateMCDCTestVectorBitmap(condExpr); in VisitAbstractConditionalOperator()
5318 CGF.incrementProfileCounter(lhsExpr); in VisitAbstractConditionalOperator()
5320 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
5322 eval.begin(CGF); in VisitAbstractConditionalOperator()
5324 eval.end(CGF); in VisitAbstractConditionalOperator()
5329 CGF.EmitBlock(RHSBlock); in VisitAbstractConditionalOperator()
5334 if (CGF.MCDCLogOpStack.empty()) in VisitAbstractConditionalOperator()
5335 CGF.maybeUpdateMCDCTestVectorBitmap(condExpr); in VisitAbstractConditionalOperator()
5338 CGF.incrementProfileCounter(rhsExpr); in VisitAbstractConditionalOperator()
5340 eval.begin(CGF); in VisitAbstractConditionalOperator()
5342 eval.end(CGF); in VisitAbstractConditionalOperator()
5345 CGF.EmitBlock(ContBlock); in VisitAbstractConditionalOperator()
5361 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
5374 CGF.EmitVariablyModifiedType(Ty); in VisitVAArgExpr()
5377 RValue ArgPtr = CGF.EmitVAArg(VE, ArgValue); in VisitVAArgExpr()
5383 return CGF.EmitBlockLiteral(block); in VisitBlockExpr()
5387 static Value *ConvertVec3AndVec4(CGBuilderTy &Builder, CodeGenFunction &CGF, in ConvertVec3AndVec4() argument
5440 Value *Src = CGF.EmitScalarExpr(E->getSrcExpr()); in VisitAsTypeExpr()
5455 return CGF.emitBoolVecConversion(Src, NumElementsDst, "astype"); in VisitAsTypeExpr()
5460 Src = ConvertVec3AndVec4(Builder, CGF, Src, 4); in VisitAsTypeExpr()
5461 Src = createCastsForTypeOfSameSize(Builder, CGF.CGM.getDataLayout(), Src, in VisitAsTypeExpr()
5474 Src = createCastsForTypeOfSameSize(Builder, CGF.CGM.getDataLayout(), Src, in VisitAsTypeExpr()
5477 Src = ConvertVec3AndVec4(Builder, CGF, Src, 3); in VisitAsTypeExpr()
5482 return createCastsForTypeOfSameSize(Builder, CGF.CGM.getDataLayout(), in VisitAsTypeExpr()
5487 return CGF.EmitAtomicExpr(E).getScalarVal(); in VisitAtomicExpr()