Lines Matching refs:CGF
216 CodeGenFunction &CGF; member in __anon442aaf6c0111::ScalarExprEmitter
223 : CGF(cgf), Builder(CGF.Builder), IgnoreResultAssign(ira), in ScalarExprEmitter()
237 llvm::Type *ConvertType(QualType T) { return CGF.ConvertType(T); } in ConvertType()
238 LValue EmitLValue(const Expr *E) { return CGF.EmitLValue(E); } in EmitLValue()
240 return CGF.EmitCheckedLValue(E, TCK); in EmitCheckedLValue()
247 return CGF.EmitLoadOfLValue(LV, Loc).getScalarVal(); in EmitLoadOfLValue()
265 if (isa<ParmVarDecl>(VD) && !CGF.SanOpts.has(SanitizerKind::Alignment)) in EmitLValueAlignmentAssumption()
280 Value *AlignmentValue = CGF.EmitScalarExpr(AVAttr->getAlignment()); in EmitLValueAlignmentAssumption()
282 CGF.EmitAlignmentAssumption(V, E, AVAttr->getLocation(), in EmitLValueAlignmentAssumption()
373 Value *Zero = CGF.CGM.getNullPointer(cast<llvm::PointerType>(V->getType()), QT); in EmitPointerToBoolConversion()
402 ApplyDebugLocation DL(CGF, E); in Visit()
407 S->dump(CGF.getContext().getSourceManager()); in VisitStmt()
425 return CGF.EmitCoawaitExpr(*S).getScalarVal(); in VisitCoawaitExpr()
428 return CGF.EmitCoyieldExpr(*S).getScalarVal(); in VisitCoyieldExpr()
462 llvm::Value *V = CGF.GetAddrOfLabel(E->getLabel()); in VisitAddrLabelExpr()
471 return CGF.EmitPseudoObjectRValue(E).getScalarVal(); in VisitPseudoObjectExpr()
476 return EmitLoadOfLValue(CGF.getOrCreateOpaqueLValueMapping(E), in VisitOpaqueValueExpr()
480 return CGF.getOrCreateOpaqueRValueMapping(E).getScalarVal(); in VisitOpaqueValueExpr()
485 if (CodeGenFunction::ConstantEmission Constant = CGF.tryEmitAsConstant(E)) in VisitDeclRefExpr()
486 return CGF.emitScalarConstant(Constant, E); in VisitDeclRefExpr()
491 return CGF.EmitObjCSelectorExpr(E); in VisitObjCSelectorExpr()
494 return CGF.EmitObjCProtocolExpr(E); in VisitObjCProtocolExpr()
503 return CGF.EmitObjCMessageExpr(E).getScalarVal(); in VisitObjCMessageExpr()
507 LValue LV = CGF.EmitObjCIsaExpr(E); in VisitObjCIsaExpr()
508 Value *V = CGF.EmitLoadOfLValue(LV, E->getExprLoc()).getScalarVal(); in VisitObjCIsaExpr()
517 if (Version <= CGF.CGM.getTarget().getPlatformMinVersion()) in VisitObjCAvailabilityCheckExpr()
522 llvm::ConstantInt::get(CGF.CGM.Int32Ty, Version.getMajor()), in VisitObjCAvailabilityCheckExpr()
523 llvm::ConstantInt::get(CGF.CGM.Int32Ty, Min ? *Min : 0), in VisitObjCAvailabilityCheckExpr()
524 llvm::ConstantInt::get(CGF.CGM.Int32Ty, SMin ? *SMin : 0), in VisitObjCAvailabilityCheckExpr()
527 return CGF.EmitBuiltinAvailable(Args); in VisitObjCAvailabilityCheckExpr()
542 assert(CGF.getArrayInitIndex() && in VisitArrayInitIndexExpr()
544 return CGF.getArrayInitIndex(); in VisitArrayInitIndexExpr()
551 CGF.CGM.EmitExplicitCastExprType(E, &CGF); in VisitExplicitCastExpr()
557 if (E->getCallReturnType(CGF.getContext())->isReferenceType()) in VisitCallExpr()
560 Value *V = CGF.EmitCallExpr(E).getScalarVal(); in VisitCallExpr()
596 return CGF.CGM.getMemberPointerConstant(E); in VisitUnaryAddrOf()
628 CodeGenFunction::CXXDefaultInitExprScope Scope(CGF); in VisitCXXDefaultInitExpr()
632 return CGF.LoadCXXThis(); in VisitCXXThisExpr()
637 return CGF.EmitCXXNewExpr(E); in VisitCXXNewExpr()
640 CGF.EmitCXXDeleteExpr(E); in VisitCXXDeleteExpr()
662 CGF.EmitScalarExpr(E->getBase()); in VisitCXXPseudoDestructorExpr()
671 CGF.EmitCXXThrowExpr(E); in VisitCXXThrowExpr()
682 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitMul()
686 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitMul()
690 if (CanElideOverflowCheck(CGF.getContext(), Ops)) in EmitMul()
697 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow) && in EmitMul()
698 !CanElideOverflowCheck(CGF.getContext(), Ops)) in EmitMul()
791 return CGF.EmitObjCStringLiteral(E); in VisitObjCStringLiteral()
794 return CGF.EmitObjCBoxedExpr(E); in VisitObjCBoxedExpr()
797 return CGF.EmitObjCArrayLiteral(E); in VisitObjCArrayLiteral()
800 return CGF.EmitObjCDictionaryLiteral(E); in VisitObjCDictionaryLiteral()
820 return CGF.CGM.getCXXABI().EmitMemberPointerIsNotNull(CGF, Src, MPT); in EmitConversionToBool()
835 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitFloatConversionCheck()
849 APFloat::getLargest(CGF.getContext().getFloatTypeSemantics(DstType)); in EmitFloatConversionCheck()
870 CGF.getContext().getFloatTypeSemantics(OrigSrcType); in EmitFloatConversionCheck()
875 unsigned Width = CGF.getContext().getIntWidth(DstType); in EmitFloatConversionCheck()
906 CGF.getContext().getFloatTypeSemantics(SrcType); in EmitFloatConversionCheck()
933 if (CGF.getContext().getFloatingTypeOrder(OrigSrcType, DstType) != 1) in EmitFloatConversionCheck()
940 CGF.getContext().getFloatTypeSemantics(DstType); in EmitFloatConversionCheck()
948 Value *AbsSrc = CGF.EmitNounwindRuntimeCall( in EmitFloatConversionCheck()
949 CGF.CGM.getIntrinsic(llvm::Intrinsic::fabs, Src->getType()), Src); in EmitFloatConversionCheck()
958 llvm::Constant *StaticArgs[] = {CGF.EmitCheckSourceLocation(Loc), in EmitFloatConversionCheck()
959 CGF.EmitCheckTypeDescriptor(OrigSrcType), in EmitFloatConversionCheck()
960 CGF.EmitCheckTypeDescriptor(DstType)}; in EmitFloatConversionCheck()
961 CGF.EmitCheck(std::make_pair(Check, SanitizerKind::FloatCastOverflow), in EmitFloatConversionCheck()
1008 if (!CGF.SanOpts.hasOneOf(SanitizerKind::ImplicitIntegerTruncation)) in EmitIntegerTruncationCheck()
1029 if (CGF.SanOpts.has(SanitizerKind::ImplicitIntegerSignChange) && in EmitIntegerTruncationCheck()
1033 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitIntegerTruncationCheck()
1042 if (!CGF.SanOpts.has(Check.second.second)) in EmitIntegerTruncationCheck()
1046 CGF.EmitCheckSourceLocation(Loc), CGF.EmitCheckTypeDescriptor(SrcType), in EmitIntegerTruncationCheck()
1047 CGF.EmitCheckTypeDescriptor(DstType), in EmitIntegerTruncationCheck()
1049 CGF.EmitCheck(Check.second, SanitizerHandler::ImplicitConversion, StaticArgs, in EmitIntegerTruncationCheck()
1116 if (!CGF.SanOpts.has(SanitizerKind::ImplicitIntegerSignChange)) in EmitIntegerSignChangeCheck()
1148 if (CGF.SanOpts.has(SanitizerKind::ImplicitSignedIntegerTruncation) && in EmitIntegerSignChangeCheck()
1157 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitIntegerSignChangeCheck()
1173 if (CGF.SanOpts.has(SanitizerKind::ImplicitSignedIntegerTruncation) && in EmitIntegerSignChangeCheck()
1186 CGF.EmitCheckSourceLocation(Loc), CGF.EmitCheckTypeDescriptor(SrcType), in EmitIntegerSignChangeCheck()
1187 CGF.EmitCheckTypeDescriptor(DstType), in EmitIntegerSignChangeCheck()
1190 CGF.EmitCheck(Checks, SanitizerHandler::ImplicitConversion, StaticArgs, in EmitIntegerSignChangeCheck()
1224 SrcType = CGF.getContext().getCanonicalType(SrcType); in EmitScalarConversion()
1225 DstType = CGF.getContext().getCanonicalType(DstType); in EmitScalarConversion()
1241 if (SrcType->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarConversion()
1244 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) in EmitScalarConversion()
1246 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16, DstTy), in EmitScalarConversion()
1252 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarConversion()
1254 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16, in EmitScalarConversion()
1255 CGF.CGM.FloatTy), in EmitScalarConversion()
1258 Src = Builder.CreateFPExt(Src, CGF.CGM.FloatTy, "conv"); in EmitScalarConversion()
1260 SrcType = CGF.getContext().FloatTy; in EmitScalarConversion()
1261 SrcTy = CGF.FloatTy; in EmitScalarConversion()
1285 llvm::Type *MiddleTy = CGF.CGM.getDataLayout().getIntPtrType(DstPT); in EmitScalarConversion()
1355 if (CGF.SanOpts.has(SanitizerKind::FloatCastOverflow) && in EmitScalarConversion()
1361 if (DstType->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarConversion()
1366 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) in EmitScalarConversion()
1368 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16, SrcTy), Src); in EmitScalarConversion()
1372 DstTy = CGF.FloatTy; in EmitScalarConversion()
1402 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarConversion()
1405 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16, CGF.CGM.FloatTy), in EmitScalarConversion()
1434 CGF.getContext().getFixedPointSemantics(SrcTy); in EmitFixedPointConversion()
1436 CGF.getContext().getFixedPointSemantics(DstTy); in EmitFixedPointConversion()
1479 CGF.getLLVMContext(), in EmitFixedPointConversion()
1489 CGF.getLLVMContext(), in EmitFixedPointConversion()
1525 return CGF.EmitFromMemory(CGF.CGM.EmitNullConstant(Ty), Ty); in EmitNullValue()
1534 assert(CGF.IsSanitizerScope); in EmitBinOpCheck()
1543 StaticData.push_back(CGF.EmitCheckSourceLocation(Info.E->getExprLoc())); in EmitBinOpCheck()
1547 StaticData.push_back(CGF.EmitCheckTypeDescriptor(UO->getType())); in EmitBinOpCheck()
1555 CGF.EmitCheckTypeDescriptor(BO->getLHS()->getType())); in EmitBinOpCheck()
1557 CGF.EmitCheckTypeDescriptor(BO->getRHS()->getType())); in EmitBinOpCheck()
1561 StaticData.push_back(CGF.EmitCheckTypeDescriptor(Info.Ty)); in EmitBinOpCheck()
1570 StaticData.push_back(CGF.EmitCheckTypeDescriptor(Info.Ty)); in EmitBinOpCheck()
1576 CGF.EmitCheck(Checks, Check, StaticData, DynamicData); in EmitBinOpCheck()
1584 CGF.ErrorUnsupported(E, "scalar expression"); in VisitExpr()
1587 return llvm::UndefValue::get(CGF.ConvertType(E->getType())); in VisitExpr()
1593 Value *LHS = CGF.EmitScalarExpr(E->getExpr(0)); in VisitShuffleVectorExpr()
1594 Value *RHS = CGF.EmitScalarExpr(E->getExpr(1)); in VisitShuffleVectorExpr()
1619 Value *IIndx = llvm::ConstantInt::get(CGF.SizeTy, i); in VisitShuffleVectorExpr()
1628 Value* V1 = CGF.EmitScalarExpr(E->getExpr(0)); in VisitShuffleVectorExpr()
1629 Value* V2 = CGF.EmitScalarExpr(E->getExpr(1)); in VisitShuffleVectorExpr()
1633 llvm::APSInt Idx = E->getShuffleMaskIdx(CGF.getContext(), i-2); in VisitShuffleVectorExpr()
1636 indices.push_back(llvm::UndefValue::get(CGF.Int32Ty)); in VisitShuffleVectorExpr()
1649 Value *Src = CGF.EmitScalarExpr(E->getSrcExpr()); in VisitConvertVectorExpr()
1651 SrcType = CGF.getContext().getCanonicalType(SrcType); in VisitConvertVectorExpr()
1652 DstType = CGF.getContext().getCanonicalType(DstType); in VisitConvertVectorExpr()
1720 if (CodeGenFunction::ConstantEmission Constant = CGF.tryEmitAsConstant(E)) { in VisitMemberExpr()
1721 CGF.EmitIgnoredExpr(E->getBase()); in VisitMemberExpr()
1722 return CGF.emitScalarConstant(Constant, E); in VisitMemberExpr()
1725 if (E->EvaluateAsInt(Result, CGF.getContext(), Expr::SE_AllowSideEffects)) { in VisitMemberExpr()
1727 CGF.EmitIgnoredExpr(E->getBase()); in VisitMemberExpr()
1751 if (CGF.SanOpts.has(SanitizerKind::ArrayBounds)) in VisitArraySubscriptExpr()
1752 CGF.EmitBoundsCheck(E, E->getBase(), Idx, IdxTy, /*Accessed*/true); in VisitArraySubscriptExpr()
1782 CGF.ErrorUnsupported(E, "GNU array range designator extension"); in VisitInitListExpr()
1826 Args.push_back(getAsInt32(C, CGF.Int32Ty)); in VisitInitListExpr()
1827 Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty)); in VisitInitListExpr()
1836 Args.push_back(getMaskElt(SVV, j, 0, CGF.Int32Ty)); in VisitInitListExpr()
1838 Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty)); in VisitInitListExpr()
1876 CGF.Int32Ty)); in VisitInitListExpr()
1882 Args.push_back(getMaskElt(SVI, j, Offset, CGF.Int32Ty)); in VisitInitListExpr()
1883 Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty)); in VisitInitListExpr()
1897 Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty)); in VisitInitListExpr()
1907 Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty)); in VisitInitListExpr()
1976 Addr = Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(DestTy)); in VisitCastExpr()
1977 LValue LV = CGF.MakeAddrLValue(Addr, DestTy); in VisitCastExpr()
1994 if (CGF.SanOpts.has(SanitizerKind::CFIUnrelatedCast)) { in VisitCastExpr()
1996 CGF.EmitVTablePtrCheckForCast(PT->getPointeeType(), Src, in VisitCastExpr()
2002 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers) { in VisitCastExpr()
2024 if (E->EvaluateAsRValue(Result, CGF.getContext()) && in VisitCastExpr()
2031 return CGF.CGM.getNullPointer(cast<llvm::PointerType>( in VisitCastExpr()
2036 return CGF.CGM.getTargetCodeGenInfo().performAddrSpaceCast( in VisitCastExpr()
2037 CGF, Visit(E), E->getType()->getPointeeType().getAddressSpace(), in VisitCastExpr()
2050 Address Base = CGF.EmitPointerWithAlignment(E); in VisitCastExpr()
2052 CGF.GetAddressOfDerivedClass(Base, DerivedClassDecl, in VisitCastExpr()
2054 CGF.ShouldNullCheckClassCastValue(CE)); in VisitCastExpr()
2058 if (CGF.sanitizePerformTypeCheck()) in VisitCastExpr()
2059 CGF.EmitTypeCheck(CodeGenFunction::TCK_DowncastPointer, CE->getExprLoc(), in VisitCastExpr()
2062 if (CGF.SanOpts.has(SanitizerKind::CFIDerivedCast)) in VisitCastExpr()
2063 CGF.EmitVTablePtrCheckForCast( in VisitCastExpr()
2074 return CGF.EmitPointerWithAlignment(CE).getPointer(); in VisitCastExpr()
2078 Address V = CGF.EmitPointerWithAlignment(E); in VisitCastExpr()
2080 return CGF.EmitDynamicCast(V, DCE); in VisitCastExpr()
2084 return CGF.EmitArrayToPointerDecay(E).getPointer(); in VisitCastExpr()
2092 return CGF.CGM.getNullPointer(cast<llvm::PointerType>(ConvertType(DestTy)), in VisitCastExpr()
2100 return CGF.CGM.getCXXABI().EmitNullMemberPointer(MPT); in VisitCastExpr()
2114 return CGF.CGM.getCXXABI().EmitMemberPointerConversion(CGF, CE, Src); in VisitCastExpr()
2118 return CGF.EmitARCRetainScalarExpr(E); in VisitCastExpr()
2120 return CGF.EmitObjCConsumeObject(E->getType(), Visit(E)); in VisitCastExpr()
2122 return CGF.EmitARCReclaimReturnedObject(E, /*allowUnsafe*/ Ignored); in VisitCastExpr()
2124 return CGF.EmitARCExtendBlockObject(E); in VisitCastExpr()
2127 return CGF.EmitBlockCopyAndAutorelease(Visit(E), E->getType()); in VisitCastExpr()
2140 assert(CGF.getContext().hasSameUnqualifiedType(E->getType(), DestTy)); in VisitCastExpr()
2150 llvm::Type *MiddleTy = CGF.CGM.getDataLayout().getIntPtrType(DestLLVMTy); in VisitCastExpr()
2157 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers) { in VisitCastExpr()
2169 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers) { in VisitCastExpr()
2181 CGF.EmitIgnoredExpr(E); in VisitCastExpr()
2207 Opts = ScalarConversionOpts(CGF.SanOpts); in VisitCastExpr()
2232 return CGF.CGM.getCXXABI().EmitMemberPointerIsNotNull(CGF, MemPtr, MPT); in VisitCastExpr()
2237 return CGF.EmitComplexExpr(E, false, true).first; in VisitCastExpr()
2241 CodeGenFunction::ComplexPairTy V = CGF.EmitComplexExpr(E); in VisitCastExpr()
2256 return CGF.CGM.createOpenCLIntToSamplerConversion(E, CGF); in VisitCastExpr()
2264 CodeGenFunction::StmtExprEvaluation eval(CGF); in VisitStmtExpr()
2265 Address RetAlloca = CGF.EmitCompoundStmt(*E->getSubStmt(), in VisitStmtExpr()
2269 return CGF.EmitLoadOfScalar(CGF.MakeAddrLValue(RetAlloca, E->getType()), in VisitStmtExpr()
2274 CGF.enterFullExpression(E); in VisitExprWithCleanups()
2275 CodeGenFunction::RunCleanupsScope Scope(CGF); in VisitExprWithCleanups()
2304 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitIncDecConsiderOverflowBehavior()
2308 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitIncDecConsiderOverflowBehavior()
2334 llvm::Value *True = CGF.EmitToMemory(Builder.getTrue(), type); in EmitScalarPrePostIncDec()
2351 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow)) && in EmitScalarPrePostIncDec()
2352 CGF.getLangOpts().getSignedOverflowBehavior() != in EmitScalarPrePostIncDec()
2358 llvm::Value *amt = CGF.EmitToMemory( in EmitScalarPrePostIncDec()
2368 llvm::BasicBlock *opBB = CGF.createBasicBlock("atomic_op", CGF.CurFn); in EmitScalarPrePostIncDec()
2369 value = CGF.EmitToMemory(value, type); in EmitScalarPrePostIncDec()
2397 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow)) { in EmitScalarPrePostIncDec()
2411 = CGF.getContext().getAsVariableArrayType(type)) { in EmitScalarPrePostIncDec()
2412 llvm::Value *numElts = CGF.getVLASize(vla).NumElts; in EmitScalarPrePostIncDec()
2414 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
2417 value = CGF.EmitCheckedInBoundsGEP( in EmitScalarPrePostIncDec()
2425 value = CGF.EmitCastToVoidPtr(value); in EmitScalarPrePostIncDec()
2426 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
2429 value = CGF.EmitCheckedInBoundsGEP(value, amt, /*SignedIndices=*/false, in EmitScalarPrePostIncDec()
2437 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
2440 value = CGF.EmitCheckedInBoundsGEP(value, amt, /*SignedIndices=*/false, in EmitScalarPrePostIncDec()
2463 if (type->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarPrePostIncDec()
2465 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarPrePostIncDec()
2467 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16, in EmitScalarPrePostIncDec()
2468 CGF.CGM.FloatTy), in EmitScalarPrePostIncDec()
2471 value = Builder.CreateFPExt(input, CGF.CGM.FloatTy, "incdec.conv"); in EmitScalarPrePostIncDec()
2489 FS = &CGF.getTarget().getFloat128Format(); in EmitScalarPrePostIncDec()
2491 FS = &CGF.getTarget().getHalfFormat(); in EmitScalarPrePostIncDec()
2493 FS = &CGF.getTarget().getLongDoubleFormat(); in EmitScalarPrePostIncDec()
2499 if (type->isHalfType() && !CGF.getContext().getLangOpts().NativeHalfType) { in EmitScalarPrePostIncDec()
2500 if (CGF.getContext().getTargetInfo().useFP16ConversionIntrinsics()) { in EmitScalarPrePostIncDec()
2502 CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16, in EmitScalarPrePostIncDec()
2503 CGF.CGM.FloatTy), in EmitScalarPrePostIncDec()
2513 value = CGF.EmitCastToVoidPtr(value); in EmitScalarPrePostIncDec()
2515 CharUnits size = CGF.getContext().getTypeSizeInChars(OPT->getObjectType()); in EmitScalarPrePostIncDec()
2518 llvm::ConstantInt::get(CGF.SizeTy, size.getQuantity()); in EmitScalarPrePostIncDec()
2520 if (CGF.getLangOpts().isSignedOverflowDefined()) in EmitScalarPrePostIncDec()
2523 value = CGF.EmitCheckedInBoundsGEP(value, sizeValue, in EmitScalarPrePostIncDec()
2531 llvm::BasicBlock *contBB = CGF.createBasicBlock("atomic_cont", CGF.CurFn); in EmitScalarPrePostIncDec()
2532 auto Pair = CGF.EmitAtomicCompareExchange( in EmitScalarPrePostIncDec()
2534 llvm::Value *old = CGF.EmitToMemory(Pair.first.getScalarVal(), type); in EmitScalarPrePostIncDec()
2544 CGF.EmitStoreThroughBitfieldLValue(RValue::get(value), LV, &value); in EmitScalarPrePostIncDec()
2546 CGF.EmitStoreThroughLValue(RValue::get(value), LV); in EmitScalarPrePostIncDec()
2592 Value *BoolVal = CGF.EvaluateExprAsBool(E->getSubExpr()); in VisitUnaryLNot()
2606 if (E->EvaluateAsInt(EVResult, CGF.getContext())) { in VisitOffsetOfExpr()
2623 llvm::Value* Idx = CGF.EmitScalarExpr(IdxExpr); in VisitOffsetOfExpr()
2629 CGF.getContext().getAsArrayType(CurrentType)->getElementType(); in VisitOffsetOfExpr()
2633 CGF.getContext().getTypeSizeInChars(CurrentType).getQuantity()); in VisitOffsetOfExpr()
2643 const ASTRecordLayout &RL = CGF.getContext().getASTRecordLayout(RD); in VisitOffsetOfExpr()
2658 CGF.getContext().getCharWidth(); in VisitOffsetOfExpr()
2671 CGF.ErrorUnsupported(E, "virtual base in offsetof"); in VisitOffsetOfExpr()
2676 const ASTRecordLayout &RL = CGF.getContext().getASTRecordLayout(RD); in VisitOffsetOfExpr()
2702 CGF.getContext().getAsVariableArrayType(TypeToSize)) { in VisitUnaryExprOrTypeTraitExpr()
2705 CGF.EmitVariablyModifiedType(TypeToSize); in VisitUnaryExprOrTypeTraitExpr()
2709 CGF.EmitIgnoredExpr(E->getArgumentExpr()); in VisitUnaryExprOrTypeTraitExpr()
2712 auto VlaSize = CGF.getVLASize(VAT); in VisitUnaryExprOrTypeTraitExpr()
2716 CharUnits eltSize = CGF.getContext().getTypeSizeInChars(VlaSize.Type); in VisitUnaryExprOrTypeTraitExpr()
2718 size = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), size); in VisitUnaryExprOrTypeTraitExpr()
2724 CGF.getContext() in VisitUnaryExprOrTypeTraitExpr()
2725 .toCharUnitsFromBits(CGF.getContext().getOpenMPDefaultSimdAlign( in VisitUnaryExprOrTypeTraitExpr()
2728 return llvm::ConstantInt::get(CGF.SizeTy, Alignment); in VisitUnaryExprOrTypeTraitExpr()
2733 return Builder.getInt(E->EvaluateKnownConstInt(CGF.getContext())); in VisitUnaryExprOrTypeTraitExpr()
2743 return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), in VisitUnaryReal()
2747 return CGF.EmitComplexExpr(Op, false, true).first; in VisitUnaryReal()
2760 return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), in VisitUnaryImag()
2764 return CGF.EmitComplexExpr(Op, true, false).second; in VisitUnaryImag()
2770 CGF.EmitLValue(Op); in VisitUnaryImag()
2772 CGF.EmitScalarExpr(Op, true); in VisitUnaryImag()
2800 return CGF.EmitScalarCompoundAssignWithComplex(E, Result); in EmitCompoundAssignLValue()
2817 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow)) && in EmitCompoundAssignLValue()
2818 CGF.getLangOpts().getSignedOverflowBehavior() != in EmitCompoundAssignLValue()
2847 llvm::Value *amt = CGF.EmitToMemory( in EmitCompoundAssignLValue()
2859 llvm::BasicBlock *opBB = CGF.createBasicBlock("atomic_op", CGF.CurFn); in EmitCompoundAssignLValue()
2861 OpInfo.LHS = CGF.EmitToMemory(OpInfo.LHS, type); in EmitCompoundAssignLValue()
2881 Loc, ScalarConversionOpts(CGF.SanOpts)); in EmitCompoundAssignLValue()
2885 llvm::BasicBlock *contBB = CGF.createBasicBlock("atomic_cont", CGF.CurFn); in EmitCompoundAssignLValue()
2886 auto Pair = CGF.EmitAtomicCompareExchange( in EmitCompoundAssignLValue()
2888 llvm::Value *old = CGF.EmitToMemory(Pair.first.getScalarVal(), LHSTy); in EmitCompoundAssignLValue()
2901 CGF.EmitStoreThroughBitfieldLValue(RValue::get(Result), LHSLV, &Result); in EmitCompoundAssignLValue()
2903 CGF.EmitStoreThroughLValue(RValue::get(Result), LHSLV); in EmitCompoundAssignLValue()
2919 if (!CGF.getLangOpts().CPlusPlus) in EmitCompoundAssign()
2934 if (CGF.SanOpts.has(SanitizerKind::IntegerDivideByZero)) { in EmitUndefinedBehaviorIntegerDivAndRemCheck()
2940 if (CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow) && in EmitUndefinedBehaviorIntegerDivAndRemCheck()
2942 !IsWidenedIntegerOp(CGF.getContext(), BO->getLHS()) && in EmitUndefinedBehaviorIntegerDivAndRemCheck()
2963 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitDiv()
2964 if ((CGF.SanOpts.has(SanitizerKind::IntegerDivideByZero) || in EmitDiv()
2965 CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) && in EmitDiv()
2970 } else if (CGF.SanOpts.has(SanitizerKind::FloatDivideByZero) && in EmitDiv()
2982 if (CGF.getLangOpts().OpenCL && in EmitDiv()
2983 !CGF.CGM.getCodeGenOpts().CorrectlyRoundedDivSqrt) { in EmitDiv()
2993 CGF.SetFPAccuracy(Val, 2.5); in EmitDiv()
3005 if ((CGF.SanOpts.has(SanitizerKind::IntegerDivideByZero) || in EmitRem()
3006 CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) && in EmitRem()
3009 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitRem()
3051 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitOverflowCheckedBinOp()
3052 llvm::Type *opTy = CGF.CGM.getTypes().ConvertType(Ops.Ty); in EmitOverflowCheckedBinOp()
3054 llvm::Function *intrinsic = CGF.CGM.getIntrinsic(IID, opTy); in EmitOverflowCheckedBinOp()
3062 &CGF.getLangOpts().OverflowHandler; in EmitOverflowCheckedBinOp()
3066 if (!isSigned || CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) { in EmitOverflowCheckedBinOp()
3072 CGF.EmitTrapCheck(Builder.CreateNot(overflow)); in EmitOverflowCheckedBinOp()
3079 CGF.createBasicBlock("nooverflow", CGF.CurFn, initialBB->getNextNode()); in EmitOverflowCheckedBinOp()
3080 llvm::BasicBlock *overflowBB = CGF.createBasicBlock("overflow", CGF.CurFn); in EmitOverflowCheckedBinOp()
3089 llvm::Type *Int8Ty = CGF.Int8Ty; in EmitOverflowCheckedBinOp()
3090 llvm::Type *argTypes[] = { CGF.Int64Ty, CGF.Int64Ty, Int8Ty, Int8Ty }; in EmitOverflowCheckedBinOp()
3092 llvm::FunctionType::get(CGF.Int64Ty, argTypes, true); in EmitOverflowCheckedBinOp()
3093 llvm::Value *handler = CGF.CGM.CreateRuntimeFunction(handlerTy, *handlerName); in EmitOverflowCheckedBinOp()
3097 llvm::Value *lhs = Builder.CreateSExt(Ops.LHS, CGF.Int64Ty); in EmitOverflowCheckedBinOp()
3098 llvm::Value *rhs = Builder.CreateSExt(Ops.RHS, CGF.Int64Ty); in EmitOverflowCheckedBinOp()
3109 CGF.EmitNounwindRuntimeCall(handler, handlerArgs); in EmitOverflowCheckedBinOp()
3124 static Value *emitPointerArithmetic(CodeGenFunction &CGF, in emitPointerArithmetic() argument
3145 auto &DL = CGF.CGM.getDataLayout(); in emitPointerArithmetic()
3165 if (BinaryOperator::isNullPointerArithmeticExtension(CGF.getContext(), in emitPointerArithmetic()
3169 return CGF.Builder.CreateIntToPtr(index, pointer->getType()); in emitPointerArithmetic()
3174 index = CGF.Builder.CreateIntCast(index, DL.getIntPtrType(PtrTy), isSigned, in emitPointerArithmetic()
3180 index = CGF.Builder.CreateNeg(index, "idx.neg"); in emitPointerArithmetic()
3182 if (CGF.SanOpts.has(SanitizerKind::ArrayBounds)) in emitPointerArithmetic()
3183 CGF.EmitBoundsCheck(op.E, pointerOperand, index, indexOperand->getType(), in emitPointerArithmetic()
3193 = CGF.CGM.getSize(CGF.getContext().getTypeSizeInChars(objectType)); in emitPointerArithmetic()
3195 index = CGF.Builder.CreateMul(index, objectSize); in emitPointerArithmetic()
3197 Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy); in emitPointerArithmetic()
3198 result = CGF.Builder.CreateGEP(result, index, "add.ptr"); in emitPointerArithmetic()
3199 return CGF.Builder.CreateBitCast(result, pointer->getType()); in emitPointerArithmetic()
3204 = CGF.getContext().getAsVariableArrayType(elementType)) { in emitPointerArithmetic()
3206 llvm::Value *numElements = CGF.getVLASize(vla).NumElts; in emitPointerArithmetic()
3212 if (CGF.getLangOpts().isSignedOverflowDefined()) { in emitPointerArithmetic()
3213 index = CGF.Builder.CreateMul(index, numElements, "vla.index"); in emitPointerArithmetic()
3214 pointer = CGF.Builder.CreateGEP(pointer, index, "add.ptr"); in emitPointerArithmetic()
3216 index = CGF.Builder.CreateNSWMul(index, numElements, "vla.index"); in emitPointerArithmetic()
3218 CGF.EmitCheckedInBoundsGEP(pointer, index, isSigned, isSubtraction, in emitPointerArithmetic()
3228 Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy); in emitPointerArithmetic()
3229 result = CGF.Builder.CreateGEP(result, index, "add.ptr"); in emitPointerArithmetic()
3230 return CGF.Builder.CreateBitCast(result, pointer->getType()); in emitPointerArithmetic()
3233 if (CGF.getLangOpts().isSignedOverflowDefined()) in emitPointerArithmetic()
3234 return CGF.Builder.CreateGEP(pointer, index, "add.ptr"); in emitPointerArithmetic()
3236 return CGF.EmitCheckedInBoundsGEP(pointer, index, isSigned, isSubtraction, in emitPointerArithmetic()
3246 const CodeGenFunction &CGF, CGBuilderTy &Builder, in buildFMulAdd() argument
3265 CGF.CGM.getIntrinsic(llvm::Intrinsic::fmuladd, Addend->getType()), in buildFMulAdd()
3279 const CodeGenFunction &CGF, CGBuilderTy &Builder, in tryEmitFMulAdd() argument
3296 return buildFMulAdd(LHSBinOp, op.RHS, CGF, Builder, false, isSub); in tryEmitFMulAdd()
3301 return buildFMulAdd(RHSBinOp, op.LHS, CGF, Builder, isSub, false); in tryEmitFMulAdd()
3310 return emitPointerArithmetic(CGF, op, CodeGenFunction::NotSubtraction); in EmitAdd()
3313 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitAdd()
3317 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitAdd()
3321 if (CanElideOverflowCheck(CGF.getContext(), op)) in EmitAdd()
3328 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow) && in EmitAdd()
3329 !CanElideOverflowCheck(CGF.getContext(), op)) in EmitAdd()
3334 if (Value *FMulAdd = tryEmitFMulAdd(op, CGF, Builder)) in EmitAdd()
3348 switch (CGF.getLangOpts().getSignedOverflowBehavior()) { in EmitSub()
3352 if (!CGF.SanOpts.has(SanitizerKind::SignedIntegerOverflow)) in EmitSub()
3356 if (CanElideOverflowCheck(CGF.getContext(), op)) in EmitSub()
3363 CGF.SanOpts.has(SanitizerKind::UnsignedIntegerOverflow) && in EmitSub()
3364 !CanElideOverflowCheck(CGF.getContext(), op)) in EmitSub()
3369 if (Value *FMulAdd = tryEmitFMulAdd(op, CGF, Builder, true)) in EmitSub()
3381 return emitPointerArithmetic(CGF, op, CodeGenFunction::IsSubtraction); in EmitSub()
3387 = Builder.CreatePtrToInt(op.LHS, CGF.PtrDiffTy, "sub.ptr.lhs.cast"); in EmitSub()
3389 = Builder.CreatePtrToInt(op.RHS, CGF.PtrDiffTy, "sub.ptr.rhs.cast"); in EmitSub()
3400 = CGF.getContext().getAsVariableArrayType(elementType)) { in EmitSub()
3401 auto VlaSize = CGF.getVLASize(vla); in EmitSub()
3406 CharUnits eltSize = CGF.getContext().getTypeSizeInChars(elementType); in EmitSub()
3408 divisor = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), divisor); in EmitSub()
3420 elementSize = CGF.getContext().getTypeSizeInChars(elementType); in EmitSub()
3426 divisor = CGF.CGM.getSize(elementSize); in EmitSub()
3451 bool SanitizeBase = CGF.SanOpts.has(SanitizerKind::ShiftBase) && in EmitShl()
3453 !CGF.getLangOpts().isSignedOverflowDefined(); in EmitShl()
3454 bool SanitizeExponent = CGF.SanOpts.has(SanitizerKind::ShiftExponent); in EmitShl()
3456 if (CGF.getLangOpts().OpenCL) in EmitShl()
3461 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitShl()
3476 llvm::BasicBlock *Cont = CGF.createBasicBlock("cont"); in EmitShl()
3477 llvm::BasicBlock *CheckShiftBase = CGF.createBasicBlock("check"); in EmitShl()
3482 CGF.EmitBlock(CheckShiftBase); in EmitShl()
3487 if (CGF.getLangOpts().CPlusPlus) { in EmitShl()
3497 CGF.EmitBlock(Cont); in EmitShl()
3519 if (CGF.getLangOpts().OpenCL) in EmitShr()
3522 else if (CGF.SanOpts.has(SanitizerKind::ShiftExponent) && in EmitShr()
3524 CodeGenFunction::SanitizerScope SanScope(&CGF); in EmitShr()
3589 Value *LHS = CGF.EmitScalarExpr(E->getLHS()); in EmitCompare()
3590 Value *RHS = CGF.EmitScalarExpr(E->getRHS()); in EmitCompare()
3591 Result = CGF.CGM.getCXXABI().EmitMemberPointerComparison( in EmitCompare()
3592 CGF, LHS, RHS, MPT, E->getOpcode() == BO_NE); in EmitCompare()
3657 llvm::Function *F = CGF.CGM.getIntrinsic(ID); in EmitCompare()
3667 E->getType() == CGF.getContext().BoolTy) in EmitCompare()
3669 return EmitScalarConversion(Result, CGF.getContext().BoolTy, E->getType(), in EmitCompare()
3680 if (CGF.CGM.getCodeGenOpts().StrictVTablePointers && in EmitCompare()
3709 LHS = CGF.EmitComplexExpr(E->getLHS()); in EmitCompare()
3717 RHS = CGF.EmitComplexExpr(E->getRHS()); in EmitCompare()
3718 assert(CGF.getContext().hasSameUnqualifiedType(CETy, in EmitCompare()
3725 assert(CGF.getContext().hasSameUnqualifiedType(CETy, RHSTy) && in EmitCompare()
3749 return EmitScalarConversion(Result, CGF.getContext().BoolTy, E->getType(), in EmitCompare()
3761 std::tie(LHS, RHS) = CGF.EmitARCStoreStrong(E, Ignore); in VisitBinAssign()
3765 std::tie(LHS, RHS) = CGF.EmitARCStoreAutoreleasing(E); in VisitBinAssign()
3769 std::tie(LHS, RHS) = CGF.EmitARCStoreUnsafeUnretained(E, Ignore); in VisitBinAssign()
3775 RHS = CGF.EmitARCStoreWeak(LHS.getAddress(), RHS, Ignore); in VisitBinAssign()
3789 CGF.EmitStoreThroughBitfieldLValue(RValue::get(RHS), LHS, &RHS); in VisitBinAssign()
3791 CGF.EmitNullabilityCheck(LHS, RHS, E->getExprLoc()); in VisitBinAssign()
3792 CGF.EmitStoreThroughLValue(RValue::get(RHS), LHS); in VisitBinAssign()
3801 if (!CGF.getLangOpts().CPlusPlus) in VisitBinAssign()
3815 CGF.incrementProfileCounter(E); in VisitBinLAnd()
3836 if (CGF.ConstantFoldsToSimpleInteger(E->getLHS(), LHSCondVal)) { in VisitBinLAnd()
3838 CGF.incrementProfileCounter(E); in VisitBinLAnd()
3840 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLAnd()
3846 if (!CGF.ContainsLabel(E->getRHS())) in VisitBinLAnd()
3850 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("land.end"); in VisitBinLAnd()
3851 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("land.rhs"); in VisitBinLAnd()
3853 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitBinLAnd()
3856 CGF.EmitBranchOnBoolExpr(E->getLHS(), RHSBlock, ContBlock, in VisitBinLAnd()
3857 CGF.getProfileCount(E->getRHS())); in VisitBinLAnd()
3868 eval.begin(CGF); in VisitBinLAnd()
3869 CGF.EmitBlock(RHSBlock); in VisitBinLAnd()
3870 CGF.incrementProfileCounter(E); in VisitBinLAnd()
3871 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLAnd()
3872 eval.end(CGF); in VisitBinLAnd()
3880 auto NL = ApplyDebugLocation::CreateEmpty(CGF); in VisitBinLAnd()
3881 CGF.EmitBlock(ContBlock); in VisitBinLAnd()
3888 auto NL = ApplyDebugLocation::CreateArtificial(CGF); in VisitBinLAnd()
3899 CGF.incrementProfileCounter(E); in VisitBinLOr()
3920 if (CGF.ConstantFoldsToSimpleInteger(E->getLHS(), LHSCondVal)) { in VisitBinLOr()
3922 CGF.incrementProfileCounter(E); in VisitBinLOr()
3924 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLOr()
3930 if (!CGF.ContainsLabel(E->getRHS())) in VisitBinLOr()
3934 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("lor.end"); in VisitBinLOr()
3935 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("lor.rhs"); in VisitBinLOr()
3937 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitBinLOr()
3940 CGF.EmitBranchOnBoolExpr(E->getLHS(), ContBlock, RHSBlock, in VisitBinLOr()
3941 CGF.getCurrentProfileCount() - in VisitBinLOr()
3942 CGF.getProfileCount(E->getRHS())); in VisitBinLOr()
3953 eval.begin(CGF); in VisitBinLOr()
3956 CGF.EmitBlock(RHSBlock); in VisitBinLOr()
3957 CGF.incrementProfileCounter(E); in VisitBinLOr()
3958 Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS()); in VisitBinLOr()
3960 eval.end(CGF); in VisitBinLOr()
3967 CGF.EmitBlock(ContBlock); in VisitBinLOr()
3975 CGF.EmitIgnoredExpr(E->getLHS()); in VisitBinComma()
3976 CGF.EnsureInsertPoint(); in VisitBinComma()
3989 CodeGenFunction &CGF) { in isCheapEnoughToEvaluateUnconditionally() argument
3991 return E->IgnoreParens()->isEvaluatable(CGF.getContext()); in isCheapEnoughToEvaluateUnconditionally()
4007 CodeGenFunction::OpaqueValueMapping binding(CGF, E); in VisitAbstractConditionalOperator()
4016 if (CGF.ConstantFoldsToSimpleInteger(condExpr, CondExprBool)) { in VisitAbstractConditionalOperator()
4021 if (!CGF.ContainsLabel(dead)) { in VisitAbstractConditionalOperator()
4023 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
4030 Result = llvm::UndefValue::get(CGF.ConvertType(E->getType())); in VisitAbstractConditionalOperator()
4038 if (CGF.getLangOpts().OpenCL in VisitAbstractConditionalOperator()
4040 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
4042 llvm::Value *CondV = CGF.EmitScalarExpr(condExpr); in VisitAbstractConditionalOperator()
4083 if (isCheapEnoughToEvaluateUnconditionally(lhsExpr, CGF) && in VisitAbstractConditionalOperator()
4084 isCheapEnoughToEvaluateUnconditionally(rhsExpr, CGF)) { in VisitAbstractConditionalOperator()
4085 llvm::Value *CondV = CGF.EvaluateExprAsBool(condExpr); in VisitAbstractConditionalOperator()
4086 llvm::Value *StepV = Builder.CreateZExtOrBitCast(CondV, CGF.Int64Ty); in VisitAbstractConditionalOperator()
4088 CGF.incrementProfileCounter(E, StepV); in VisitAbstractConditionalOperator()
4100 llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true"); in VisitAbstractConditionalOperator()
4101 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false"); in VisitAbstractConditionalOperator()
4102 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end"); in VisitAbstractConditionalOperator()
4104 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitAbstractConditionalOperator()
4105 CGF.EmitBranchOnBoolExpr(condExpr, LHSBlock, RHSBlock, in VisitAbstractConditionalOperator()
4106 CGF.getProfileCount(lhsExpr)); in VisitAbstractConditionalOperator()
4108 CGF.EmitBlock(LHSBlock); in VisitAbstractConditionalOperator()
4109 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
4110 eval.begin(CGF); in VisitAbstractConditionalOperator()
4112 eval.end(CGF); in VisitAbstractConditionalOperator()
4117 CGF.EmitBlock(RHSBlock); in VisitAbstractConditionalOperator()
4118 eval.begin(CGF); in VisitAbstractConditionalOperator()
4120 eval.end(CGF); in VisitAbstractConditionalOperator()
4123 CGF.EmitBlock(ContBlock); in VisitAbstractConditionalOperator()
4146 CGF.EmitVariablyModifiedType(Ty); in VisitVAArgExpr()
4149 Address ArgPtr = CGF.EmitVAArg(VE, ArgValue); in VisitVAArgExpr()
4155 CGF.ErrorUnsupported(VE, "va_arg expression"); in VisitVAArgExpr()
4174 return CGF.EmitBlockLiteral(block); in VisitBlockExpr()
4178 static Value *ConvertVec3AndVec4(CGBuilderTy &Builder, CodeGenFunction &CGF, in ConvertVec3AndVec4() argument
4186 Args.push_back(llvm::UndefValue::get(CGF.Int32Ty)); in ConvertVec3AndVec4()
4238 Value *Src = CGF.EmitScalarExpr(E->getSrcExpr()); in VisitAsTypeExpr()
4250 Src = ConvertVec3AndVec4(Builder, CGF, Src, 4); in VisitAsTypeExpr()
4252 if (!CGF.CGM.getCodeGenOpts().PreserveVec3Type) { in VisitAsTypeExpr()
4253 Src = createCastsForTypeOfSameSize(Builder, CGF.CGM.getDataLayout(), Src, in VisitAsTypeExpr()
4265 if (!CGF.CGM.getCodeGenOpts().PreserveVec3Type) { in VisitAsTypeExpr()
4267 Src = createCastsForTypeOfSameSize(Builder, CGF.CGM.getDataLayout(), Src, in VisitAsTypeExpr()
4271 Src = ConvertVec3AndVec4(Builder, CGF, Src, 3); in VisitAsTypeExpr()
4276 return Src = createCastsForTypeOfSameSize(Builder, CGF.CGM.getDataLayout(), in VisitAsTypeExpr()
4281 return CGF.EmitAtomicExpr(E).getScalarVal(); in VisitAtomicExpr()