Lines Matching refs:TheCall
220 static bool BuiltinAnnotation(Sema &S, CallExpr *TheCall) { in BuiltinAnnotation() argument
221 if (S.checkArgCount(TheCall, 2)) in BuiltinAnnotation()
225 Expr *ValArg = TheCall->getArg(0); in BuiltinAnnotation()
234 Expr *StrArg = TheCall->getArg(1)->IgnoreParenCasts(); in BuiltinAnnotation()
242 TheCall->setType(Ty); in BuiltinAnnotation()
246 static bool BuiltinMSVCAnnotation(Sema &S, CallExpr *TheCall) { in BuiltinMSVCAnnotation() argument
248 if (TheCall->getNumArgs() < 1) { in BuiltinMSVCAnnotation()
249 S.Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in BuiltinMSVCAnnotation()
250 << 0 << 1 << TheCall->getNumArgs() << /*is non object*/ 0 in BuiltinMSVCAnnotation()
251 << TheCall->getCallee()->getSourceRange(); in BuiltinMSVCAnnotation()
256 for (Expr *Arg : TheCall->arguments()) { in BuiltinMSVCAnnotation()
270 static bool BuiltinAddressof(Sema &S, CallExpr *TheCall) { in BuiltinAddressof() argument
271 if (S.checkArgCount(TheCall, 1)) in BuiltinAddressof()
274 ExprResult Arg(TheCall->getArg(0)); in BuiltinAddressof()
275 QualType ResultType = S.CheckAddressOfOperand(Arg, TheCall->getBeginLoc()); in BuiltinAddressof()
279 TheCall->setArg(0, Arg.get()); in BuiltinAddressof()
280 TheCall->setType(ResultType); in BuiltinAddressof()
285 static bool BuiltinFunctionStart(Sema &S, CallExpr *TheCall) { in BuiltinFunctionStart() argument
286 if (S.checkArgCount(TheCall, 1)) in BuiltinFunctionStart()
289 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(0)); in BuiltinFunctionStart()
293 TheCall->setArg(0, Arg.get()); in BuiltinFunctionStart()
298 S.Diag(TheCall->getBeginLoc(), diag::err_function_start_invalid_type) in BuiltinFunctionStart()
299 << TheCall->getSourceRange(); in BuiltinFunctionStart()
304 TheCall->getBeginLoc()); in BuiltinFunctionStart()
309 static bool BuiltinPreserveAI(Sema &S, CallExpr *TheCall) { in BuiltinPreserveAI() argument
310 if (S.checkArgCount(TheCall, 1)) in BuiltinPreserveAI()
313 TheCall->setType(TheCall->getArg(0)->getType()); in BuiltinPreserveAI()
320 static bool BuiltinAlignment(Sema &S, CallExpr *TheCall, unsigned ID) { in BuiltinAlignment() argument
321 if (S.checkArgCount(TheCall, 2)) in BuiltinAlignment()
324 clang::Expr *Source = TheCall->getArg(0); in BuiltinAlignment()
344 clang::Expr *AlignOp = TheCall->getArg(1); in BuiltinAlignment()
383 TheCall->setArg(0, SrcArg.get()); in BuiltinAlignment()
390 TheCall->setArg(1, AlignArg.get()); in BuiltinAlignment()
394 TheCall->setType(IsBooleanAlignBuiltin ? S.Context.BoolTy : SrcTy); in BuiltinAlignment()
398 static bool BuiltinOverflow(Sema &S, CallExpr *TheCall, unsigned BuiltinID) { in BuiltinOverflow() argument
399 if (S.checkArgCount(TheCall, 3)) in BuiltinOverflow()
410 return BuiltinID == P.first && TheCall->getExprLoc().isMacroID() && in BuiltinOverflow()
411 Lexer::getImmediateMacroName(TheCall->getExprLoc(), in BuiltinOverflow()
430 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(I)); in BuiltinOverflow()
432 TheCall->setArg(I, Arg.get()); in BuiltinOverflow()
447 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(2)); in BuiltinOverflow()
449 TheCall->setArg(2, Arg.get()); in BuiltinOverflow()
468 const auto Arg = TheCall->getArg(I); in BuiltinOverflow()
485 CallExpr *TheCall; member
486 SourceLocation Loc = TheCall->getBeginLoc();
491 BuiltinDumpStructGenerator(Sema &S, CallExpr *TheCall) in BuiltinDumpStructGenerator()
492 : S(S), TheCall(TheCall), ErrorTracker(S.getDiagnostics()), in BuiltinDumpStructGenerator()
514 assert(TheCall->getNumArgs() >= 2);
515 Args.reserve((TheCall->getNumArgs() - 2) + /*Format*/ 1 + Exprs.size());
516 Args.assign(TheCall->arg_begin() + 2, TheCall->arg_end());
529 S.BuildCallExpr(/*Scope=*/nullptr, TheCall->getArg(1),
530 TheCall->getBeginLoc(), Args, TheCall->getRParenLoc());
717 auto *Wrapper = PseudoObjectExpr::Create(S.Context, TheCall, Actions, in buildWrapper()
719 TheCall->setType(Wrapper->getType()); in buildWrapper()
720 TheCall->setValueKind(Wrapper->getValueKind()); in buildWrapper()
726 static ExprResult BuiltinDumpStruct(Sema &S, CallExpr *TheCall) { in BuiltinDumpStruct() argument
727 if (S.checkArgCountAtLeast(TheCall, 2)) in BuiltinDumpStruct()
730 ExprResult PtrArgResult = S.DefaultLvalueConversion(TheCall->getArg(0)); in BuiltinDumpStruct()
733 TheCall->setArg(0, PtrArgResult.get()); in BuiltinDumpStruct()
741 << 1 << TheCall->getDirectCallee() << PtrArgType; in BuiltinDumpStruct()
753 QualType FnArgType = TheCall->getArg(1)->getType(); in BuiltinDumpStruct()
769 S.Diag(TheCall->getArg(1)->getBeginLoc(), in BuiltinDumpStruct()
771 << 2 << TheCall->getDirectCallee() << FnArgType; in BuiltinDumpStruct()
776 BuiltinDumpStructGenerator Generator(S, TheCall); in BuiltinDumpStruct()
1139 CallExpr *TheCall) { in checkFortifiedBuiltinMemoryFunction() argument
1140 if (TheCall->isValueDependent() || TheCall->isTypeDependent() || in checkFortifiedBuiltinMemoryFunction()
1173 if (NewIndex >= TheCall->getNumArgs()) in checkFortifiedBuiltinMemoryFunction()
1185 Expr *SizeArg = TheCall->getArg(NewIndex); in checkFortifiedBuiltinMemoryFunction()
1211 if (NewIndex >= TheCall->getNumArgs()) in checkFortifiedBuiltinMemoryFunction()
1214 const Expr *ObjArg = TheCall->getArg(NewIndex); in checkFortifiedBuiltinMemoryFunction()
1230 const Expr *ObjArg = TheCall->getArg(NewIndex); in checkFortifiedBuiltinMemoryFunction()
1287 TheCall->getArg(FormatIndex)->IgnoreParenImpCasts(); in checkFortifiedBuiltinMemoryFunction()
1299 DiagRuntimeBehavior(TheCall->getArg(Index)->getBeginLoc(), TheCall, in checkFortifiedBuiltinMemoryFunction()
1322 auto *FormatExpr = TheCall->getArg(FormatIndex)->IgnoreParenImpCasts(); in checkFortifiedBuiltinMemoryFunction()
1359 SourceSize = ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 2); in checkFortifiedBuiltinMemoryFunction()
1361 ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 1); in checkFortifiedBuiltinMemoryFunction()
1387 SourceSize = ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 1); in checkFortifiedBuiltinMemoryFunction()
1401 SourceSize = ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 1); in checkFortifiedBuiltinMemoryFunction()
1411 const auto *FormatExpr = TheCall->getArg(2)->IgnoreParenImpCasts(); in checkFortifiedBuiltinMemoryFunction()
1432 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in checkFortifiedBuiltinMemoryFunction()
1453 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in checkFortifiedBuiltinMemoryFunction()
1458 static bool BuiltinSEHScopeCheck(Sema &SemaRef, CallExpr *TheCall, in BuiltinSEHScopeCheck() argument
1471 auto *DRE = cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in BuiltinSEHScopeCheck()
1472 SemaRef.Diag(TheCall->getExprLoc(), DiagID) in BuiltinSEHScopeCheck()
1775 static ExprResult BuiltinLaunder(Sema &S, CallExpr *TheCall) { in BuiltinLaunder() argument
1776 if (S.checkArgCount(TheCall, 1)) in BuiltinLaunder()
1785 QualType ArgTy = TheCall->getArg(0)->getType(); in BuiltinLaunder()
1794 TheCall->setType(ParamTy); in BuiltinLaunder()
1806 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_launder_invalid_arg) in BuiltinLaunder()
1807 << *DiagSelect << TheCall->getSourceRange(); in BuiltinLaunder()
1817 if (S.RequireCompleteType(TheCall->getBeginLoc(), ParamTy->getPointeeType(), in BuiltinLaunder()
1827 S.PerformCopyInitialization(Entity, SourceLocation(), TheCall->getArg(0)); in BuiltinLaunder()
1830 TheCall->setArg(0, Arg.get()); in BuiltinLaunder()
1832 return TheCall; in BuiltinLaunder()
1838 Sema &S, unsigned BuiltinID, CallExpr *TheCall, in CheckBuiltinTargetNotInUnsupported() argument
1843 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in CheckBuiltinTargetNotInUnsupported()
1844 << TheCall->getSourceRange(); in CheckBuiltinTargetNotInUnsupported()
1853 CheckBuiltinTargetInSupported(Sema &S, unsigned BuiltinID, CallExpr *TheCall, in CheckBuiltinTargetInSupported() argument
1859 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in CheckBuiltinTargetInSupported()
1860 << TheCall->getSourceRange(); in CheckBuiltinTargetInSupported()
1868 CallExpr *TheCall) { in CheckTSBuiltinFunctionCall() argument
1878 return ARM().CheckARMBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1882 return ARM().CheckAArch64BuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1885 return BPF().CheckBPFBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1887 return Hexagon().CheckHexagonBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1892 return MIPS().CheckMipsBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1894 return SystemZ().CheckSystemZBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1897 return X86().CheckBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1902 return PPC().CheckPPCBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1904 return AMDGPU().CheckAMDGCNBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1907 return RISCV().CheckBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1911 TheCall); in CheckTSBuiltinFunctionCall()
1914 return Wasm().CheckWebAssemblyBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1917 return NVPTX().CheckNVPTXBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1952 static bool BuiltinCpu(Sema &S, const TargetInfo &TI, CallExpr *TheCall, in BuiltinCpu() argument
1969 return S.Diag(TheCall->getBeginLoc(), in BuiltinCpu()
1973 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in BuiltinCpu()
1975 Expr *Arg = TheCall->getArg(0)->IgnoreParenImpCasts(); in BuiltinCpu()
1978 return S.Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in BuiltinCpu()
1984 S.Diag(TheCall->getBeginLoc(), diag::warn_invalid_cpu_supports) in BuiltinCpu()
1989 return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_is) in BuiltinCpu()
1996 static bool BuiltinPopcountg(Sema &S, CallExpr *TheCall) { in BuiltinPopcountg() argument
1997 if (S.checkArgCount(TheCall, 1)) in BuiltinPopcountg()
2000 ExprResult ArgRes = S.DefaultLvalueConversion(TheCall->getArg(0)); in BuiltinPopcountg()
2005 TheCall->setArg(0, Arg); in BuiltinPopcountg()
2020 static bool BuiltinCountZeroBitsGeneric(Sema &S, CallExpr *TheCall) { in BuiltinCountZeroBitsGeneric() argument
2021 if (S.checkArgCountRange(TheCall, 1, 2)) in BuiltinCountZeroBitsGeneric()
2024 ExprResult Arg0Res = S.DefaultLvalueConversion(TheCall->getArg(0)); in BuiltinCountZeroBitsGeneric()
2029 TheCall->setArg(0, Arg0); in BuiltinCountZeroBitsGeneric()
2039 if (TheCall->getNumArgs() > 1) { in BuiltinCountZeroBitsGeneric()
2040 ExprResult Arg1Res = S.UsualUnaryConversions(TheCall->getArg(1)); in BuiltinCountZeroBitsGeneric()
2045 TheCall->setArg(1, Arg1); in BuiltinCountZeroBitsGeneric()
2061 CallExpr *TheCall) { in CheckBuiltinFunctionCall() argument
2062 ExprResult TheCallResult(TheCall); in CheckBuiltinFunctionCall()
2079 if (ArgNo < TheCall->getNumArgs() && in CheckBuiltinFunctionCall()
2080 BuiltinConstantArg(TheCall, ArgNo, Result)) in CheckBuiltinFunctionCall()
2089 if (BuiltinCpu(*this, Context.getTargetInfo(), TheCall, in CheckBuiltinFunctionCall()
2095 Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in CheckBuiltinFunctionCall()
2096 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in CheckBuiltinFunctionCall()
2104 *this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2107 assert(TheCall->getNumArgs() == 1 && in CheckBuiltinFunctionCall()
2109 if (ObjC().CheckObjCString(TheCall->getArg(0))) in CheckBuiltinFunctionCall()
2115 if (BuiltinVAStart(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
2123 if (BuiltinVAStartARMMicrosoft(TheCall)) in CheckBuiltinFunctionCall()
2127 if (BuiltinVAStart(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
2142 *this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2155 *this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2163 *this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2175 if (BuiltinUnorderedCompare(TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
2179 if (BuiltinFPClassification(TheCall, 6, BuiltinID)) in CheckBuiltinFunctionCall()
2183 if (BuiltinFPClassification(TheCall, 2, BuiltinID)) in CheckBuiltinFunctionCall()
2197 if (BuiltinFPClassification(TheCall, 1, BuiltinID)) in CheckBuiltinFunctionCall()
2201 return BuiltinShuffleVector(TheCall); in CheckBuiltinFunctionCall()
2205 if (BuiltinPrefetch(TheCall)) in CheckBuiltinFunctionCall()
2210 if (BuiltinAllocaWithAlign(TheCall)) in CheckBuiltinFunctionCall()
2215 Diag(TheCall->getBeginLoc(), diag::warn_alloca) in CheckBuiltinFunctionCall()
2216 << TheCall->getDirectCallee(); in CheckBuiltinFunctionCall()
2219 if (BuiltinArithmeticFence(TheCall)) in CheckBuiltinFunctionCall()
2224 if (BuiltinAssume(TheCall)) in CheckBuiltinFunctionCall()
2228 if (BuiltinAssumeAligned(TheCall)) in CheckBuiltinFunctionCall()
2233 if (BuiltinConstantArgRange(TheCall, 1, 0, 3)) in CheckBuiltinFunctionCall()
2237 if (BuiltinLongjmp(TheCall)) in CheckBuiltinFunctionCall()
2241 if (BuiltinSetjmp(TheCall)) in CheckBuiltinFunctionCall()
2245 if (checkArgCount(TheCall, 1)) in CheckBuiltinFunctionCall()
2247 TheCall->setType(Context.IntTy); in CheckBuiltinFunctionCall()
2250 if (BuiltinComplex(TheCall)) in CheckBuiltinFunctionCall()
2254 if (checkArgCount(TheCall, 1)) in CheckBuiltinFunctionCall()
2256 ExprResult Arg = DefaultFunctionArrayLvalueConversion(TheCall->getArg(0)); in CheckBuiltinFunctionCall()
2258 TheCall->setArg(0, Arg.get()); in CheckBuiltinFunctionCall()
2259 TheCall->setType(Context.IntTy); in CheckBuiltinFunctionCall()
2263 return BuiltinLaunder(*this, TheCall); in CheckBuiltinFunctionCall()
2368 Diag(TheCall->getBeginLoc(), diag::warn_atomic_implicit_seq_cst) in CheckBuiltinFunctionCall()
2369 << TheCall->getCallee()->getSourceRange(); in CheckBuiltinFunctionCall()
2375 clang::Expr *SizeOp = TheCall->getArg(2); in CheckBuiltinFunctionCall()
2382 CheckNonNullArgument(*this, TheCall->getArg(0), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
2383 CheckNonNullArgument(*this, TheCall->getArg(1), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
2388 clang::Expr *SizeOp = TheCall->getArg(2); in CheckBuiltinFunctionCall()
2395 CheckNonNullArgument(*this, TheCall->getArg(0), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
2404 if (BuiltinMSVCAnnotation(*this, TheCall)) in CheckBuiltinFunctionCall()
2408 if (BuiltinAnnotation(*this, TheCall)) in CheckBuiltinFunctionCall()
2412 if (BuiltinAddressof(*this, TheCall)) in CheckBuiltinFunctionCall()
2416 if (BuiltinFunctionStart(*this, TheCall)) in CheckBuiltinFunctionCall()
2422 if (BuiltinAlignment(*this, TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
2428 if (BuiltinOverflow(*this, TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
2441 return BuiltinDumpStruct(*this, TheCall); in CheckBuiltinFunctionCall()
2444 if (checkArgCount(TheCall, 3)) in CheckBuiltinFunctionCall()
2447 const Expr *ProbArg = TheCall->getArg(2); in CheckBuiltinFunctionCall()
2472 if (BuiltinPreserveAI(*this, TheCall)) in CheckBuiltinFunctionCall()
2476 if (BuiltinCallWithStaticChain(*this, TheCall)) in CheckBuiltinFunctionCall()
2481 if (BuiltinSEHScopeCheck(*this, TheCall, Scope::SEHExceptScope, in CheckBuiltinFunctionCall()
2487 if (BuiltinSEHScopeCheck(*this, TheCall, Scope::SEHFilterScope, in CheckBuiltinFunctionCall()
2492 if (checkArgCount(TheCall, 1)) in CheckBuiltinFunctionCall()
2496 TheCall->getBeginLoc(), in CheckBuiltinFunctionCall()
2498 TheCall)) in CheckBuiltinFunctionCall()
2501 TheCall->setType(Context.VoidPtrTy); in CheckBuiltinFunctionCall()
2513 if (checkArgCount(TheCall, 1)) in CheckBuiltinFunctionCall()
2524 Diag(TheCall->getBeginLoc(), diag::err_builtin_move_forward_unsupported) in CheckBuiltinFunctionCall()
2531 return PointerAuthStrip(*this, TheCall); in CheckBuiltinFunctionCall()
2533 return PointerAuthBlendDiscriminator(*this, TheCall); in CheckBuiltinFunctionCall()
2535 return PointerAuthSignOrAuth(*this, TheCall, PAO_Sign, in CheckBuiltinFunctionCall()
2538 return PointerAuthSignOrAuth(*this, TheCall, PAO_Sign, in CheckBuiltinFunctionCall()
2541 return PointerAuthSignOrAuth(*this, TheCall, PAO_Auth, in CheckBuiltinFunctionCall()
2544 return PointerAuthSignGenericData(*this, TheCall); in CheckBuiltinFunctionCall()
2546 return PointerAuthAuthAndResign(*this, TheCall); in CheckBuiltinFunctionCall()
2548 return PointerAuthStringDiscriminator(*this, TheCall); in CheckBuiltinFunctionCall()
2554 if (OpenCL().checkBuiltinRWPipe(TheCall)) in CheckBuiltinFunctionCall()
2561 if (OpenCL().checkBuiltinReserveRWPipe(TheCall)) in CheckBuiltinFunctionCall()
2566 if (OpenCL().checkSubgroupExt(TheCall) || in CheckBuiltinFunctionCall()
2567 OpenCL().checkBuiltinReserveRWPipe(TheCall)) in CheckBuiltinFunctionCall()
2574 if (OpenCL().checkBuiltinCommitRWPipe(TheCall)) in CheckBuiltinFunctionCall()
2579 if (OpenCL().checkSubgroupExt(TheCall) || in CheckBuiltinFunctionCall()
2580 OpenCL().checkBuiltinCommitRWPipe(TheCall)) in CheckBuiltinFunctionCall()
2585 if (OpenCL().checkBuiltinPipePackets(TheCall)) in CheckBuiltinFunctionCall()
2591 if (OpenCL().checkBuiltinToAddr(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
2596 if (OpenCL().checkBuiltinEnqueueKernel(TheCall)) in CheckBuiltinFunctionCall()
2601 if (OpenCL().checkBuiltinKernelWorkGroupSize(TheCall)) in CheckBuiltinFunctionCall()
2606 if (OpenCL().checkBuiltinNDRangeAndBlock(TheCall)) in CheckBuiltinFunctionCall()
2613 if (BuiltinOSLogFormat(TheCall)) in CheckBuiltinFunctionCall()
2618 if (BuiltinConstantArgRange(TheCall, 0, 0, 0xFFFF)) in CheckBuiltinFunctionCall()
2624 if (!TheCall->getArg(0)->isValueDependent() && in CheckBuiltinFunctionCall()
2625 TheCall->getArg(0)->EvaluateAsInt(Result, getASTContext()) && in CheckBuiltinFunctionCall()
2627 Diag(TheCall->getBeginLoc(), diag::warn_frame_address) in CheckBuiltinFunctionCall()
2631 << TheCall->getSourceRange(); in CheckBuiltinFunctionCall()
2636 if (BuiltinNonDeterministicValue(TheCall)) in CheckBuiltinFunctionCall()
2644 if (PrepareBuiltinElementwiseMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2647 QualType ArgTy = TheCall->getArg(0)->getType(); in CheckBuiltinFunctionCall()
2653 Diag(TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2686 if (PrepareBuiltinElementwiseMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2689 QualType ArgTy = TheCall->getArg(0)->getType(); in CheckBuiltinFunctionCall()
2690 if (checkFPMathBuiltinElementType(*this, TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2696 if (BuiltinElementwiseTernaryMath(TheCall)) in CheckBuiltinFunctionCall()
2704 if (BuiltinElementwiseMath(TheCall)) in CheckBuiltinFunctionCall()
2707 QualType ArgTy = TheCall->getArg(0)->getType(); in CheckBuiltinFunctionCall()
2708 if (checkFPMathBuiltinElementType(*this, TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2710 checkFPMathBuiltinElementType(*this, TheCall->getArg(1)->getBeginLoc(), in CheckBuiltinFunctionCall()
2720 if (BuiltinElementwiseMath(TheCall)) in CheckBuiltinFunctionCall()
2723 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2740 if (BuiltinElementwiseMath(TheCall)) in CheckBuiltinFunctionCall()
2745 if (PrepareBuiltinElementwiseMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2748 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2764 if (checkArgCount(TheCall, 2)) in CheckBuiltinFunctionCall()
2767 ExprResult Magnitude = UsualUnaryConversions(TheCall->getArg(0)); in CheckBuiltinFunctionCall()
2768 ExprResult Sign = UsualUnaryConversions(TheCall->getArg(1)); in CheckBuiltinFunctionCall()
2774 if (checkFPMathBuiltinElementType(*this, TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2776 checkFPMathBuiltinElementType(*this, TheCall->getArg(1)->getBeginLoc(), in CheckBuiltinFunctionCall()
2787 TheCall->setArg(0, Magnitude.get()); in CheckBuiltinFunctionCall()
2788 TheCall->setArg(1, Sign.get()); in CheckBuiltinFunctionCall()
2789 TheCall->setType(Magnitude.get()->getType()); in CheckBuiltinFunctionCall()
2794 if (PrepareBuiltinReduceMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2797 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2812 TheCall->setType(ElTy); in CheckBuiltinFunctionCall()
2823 if (PrepareBuiltinReduceMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2826 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2841 TheCall->setType(ElTy); in CheckBuiltinFunctionCall()
2846 return BuiltinMatrixTranspose(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
2849 return BuiltinMatrixColumnMajorLoad(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
2852 return BuiltinMatrixColumnMajorStore(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
2855 if (!checkBuiltinVerboseTrap(TheCall, *this)) in CheckBuiltinFunctionCall()
2860 auto Check = [](CallExpr *TheCall) { in CheckBuiltinFunctionCall() argument
2861 if (TheCall->getNumArgs() != 1) in CheckBuiltinFunctionCall()
2863 auto *DRE = dyn_cast<DeclRefExpr>(TheCall->getArg(0)->IgnoreImpCasts()); in CheckBuiltinFunctionCall()
2872 if (!Check(TheCall)) { in CheckBuiltinFunctionCall()
2873 Diag(TheCall->getBeginLoc(), in CheckBuiltinFunctionCall()
2880 if (BuiltinPopcountg(*this, TheCall)) in CheckBuiltinFunctionCall()
2885 if (BuiltinCountZeroBitsGeneric(*this, TheCall)) in CheckBuiltinFunctionCall()
2890 Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2893 Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in CheckBuiltinFunctionCall()
2901 if (getLangOpts().HLSL && HLSL().CheckBuiltinFunctionCall(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
2913 Context.BuiltinInfo.getAuxBuiltinID(BuiltinID), TheCall)) in CheckBuiltinFunctionCall()
2917 TheCall)) in CheckBuiltinFunctionCall()
2925 bool Sema::ValueIsRunOfOnes(CallExpr *TheCall, unsigned ArgNum) { in ValueIsRunOfOnes() argument
2928 Expr *Arg = TheCall->getArg(ArgNum); in ValueIsRunOfOnes()
2933 if (BuiltinConstantArg(TheCall, ArgNum, Result)) in ValueIsRunOfOnes()
2940 return Diag(TheCall->getBeginLoc(), in ValueIsRunOfOnes()
3358 bool Sema::CheckFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall, in CheckFunctionCall() argument
3360 bool IsMemberOperatorCall = isa<CXXOperatorCallExpr>(TheCall) && in CheckFunctionCall()
3362 bool IsMemberFunction = isa<CXXMemberCallExpr>(TheCall) || in CheckFunctionCall()
3365 TheCall->getCallee()); in CheckFunctionCall()
3366 Expr** Args = TheCall->getArgs(); in CheckFunctionCall()
3367 unsigned NumArgs = TheCall->getNumArgs(); in CheckFunctionCall()
3380 cast<CXXMemberCallExpr>(TheCall)->getImplicitObjectArgument(); in CheckFunctionCall()
3394 CheckArgAlignment(TheCall->getRParenLoc(), FDecl, "'this'", ThisType, in CheckFunctionCall()
3399 IsMemberFunction, TheCall->getRParenLoc(), in CheckFunctionCall()
3400 TheCall->getCallee()->getSourceRange(), CallType); in CheckFunctionCall()
3410 CheckTCBEnforcement(TheCall->getExprLoc(), FDecl); in CheckFunctionCall()
3412 CheckAbsoluteValueFunction(TheCall, FDecl); in CheckFunctionCall()
3413 CheckMaxUnsignedZero(TheCall, FDecl); in CheckFunctionCall()
3414 CheckInfNaNFunction(TheCall, FDecl); in CheckFunctionCall()
3427 CheckStrlcpycatArguments(TheCall, FnInfo); in CheckFunctionCall()
3430 CheckStrncatArguments(TheCall, FnInfo); in CheckFunctionCall()
3433 CheckFreeArguments(TheCall); in CheckFunctionCall()
3436 CheckMemaccessArguments(TheCall, CMId, FnInfo); in CheckFunctionCall()
3442 bool Sema::CheckPointerCall(NamedDecl *NDecl, CallExpr *TheCall, in CheckPointerCall() argument
3466 llvm::ArrayRef(TheCall->getArgs(), TheCall->getNumArgs()), in CheckPointerCall()
3467 /*IsMemberFunction=*/false, TheCall->getRParenLoc(), in CheckPointerCall()
3468 TheCall->getCallee()->getSourceRange(), CallType); in CheckPointerCall()
3473 bool Sema::CheckOtherCall(CallExpr *TheCall, const FunctionProtoType *Proto) { in CheckOtherCall() argument
3475 TheCall->getCallee()); in CheckOtherCall()
3477 llvm::ArrayRef(TheCall->getArgs(), TheCall->getNumArgs()), in CheckOtherCall()
3478 /*IsMemberFunction=*/false, TheCall->getRParenLoc(), in CheckOtherCall()
3479 TheCall->getCallee()->getSourceRange(), CallType); in CheckOtherCall()
3522 CallExpr *TheCall = cast<CallExpr>(TheCallResult.get()); in AtomicOpsOverloaded() local
3523 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in AtomicOpsOverloaded()
3524 MultiExprArg Args{TheCall->getArgs(), TheCall->getNumArgs()}; in AtomicOpsOverloaded()
3525 return BuildAtomicExpr({TheCall->getBeginLoc(), TheCall->getEndLoc()}, in AtomicOpsOverloaded()
3526 DRE->getSourceRange(), TheCall->getRParenLoc(), Args, in AtomicOpsOverloaded()
4125 CallExpr *TheCall = static_cast<CallExpr *>(TheCallResult.get()); in BuiltinAtomicOverloaded() local
4126 Expr *Callee = TheCall->getCallee(); in BuiltinAtomicOverloaded()
4131 if (TheCall->getNumArgs() < 1) { in BuiltinAtomicOverloaded()
4132 Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in BuiltinAtomicOverloaded()
4133 << 0 << 1 << TheCall->getNumArgs() << /*is non object*/ 0 in BuiltinAtomicOverloaded()
4143 Expr *FirstArg = TheCall->getArg(0); in BuiltinAtomicOverloaded()
4148 TheCall->setArg(0, FirstArg); in BuiltinAtomicOverloaded()
4408 if (TheCall->getNumArgs() < 1+NumFixed) { in BuiltinAtomicOverloaded()
4409 Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in BuiltinAtomicOverloaded()
4410 << 0 << 1 + NumFixed << TheCall->getNumArgs() << /*is non object*/ 0 in BuiltinAtomicOverloaded()
4415 Diag(TheCall->getEndLoc(), diag::warn_atomic_implicit_seq_cst) in BuiltinAtomicOverloaded()
4419 Diag(TheCall->getEndLoc(), diag::warn_sync_fetch_and_nand_semantics_change) in BuiltinAtomicOverloaded()
4445 ExprResult Arg = TheCall->getArg(i+1); in BuiltinAtomicOverloaded()
4462 TheCall->setArg(i+1, Arg.get()); in BuiltinAtomicOverloaded()
4476 TheCall->setCallee(PromotedCall.get()); in BuiltinAtomicOverloaded()
4481 TheCall->setType(ResultType); in BuiltinAtomicOverloaded()
4496 CallExpr *TheCall = (CallExpr *)TheCallResult.get(); in BuiltinNontemporalOverloaded() local
4498 cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in BuiltinNontemporalOverloaded()
4508 if (checkArgCount(TheCall, numArgs)) in BuiltinNontemporalOverloaded()
4515 Expr *PointerArg = TheCall->getArg(numArgs - 1); in BuiltinNontemporalOverloaded()
4522 TheCall->setArg(numArgs - 1, PointerArg); in BuiltinNontemporalOverloaded()
4545 TheCall->setType(ValType); in BuiltinNontemporalOverloaded()
4549 ExprResult ValArg = TheCall->getArg(0); in BuiltinNontemporalOverloaded()
4556 TheCall->setArg(0, ValArg.get()); in BuiltinNontemporalOverloaded()
4557 TheCall->setType(Context.VoidTy); in BuiltinNontemporalOverloaded()
4661 bool Sema::BuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) { in BuiltinVAStart() argument
4662 Expr *Fn = TheCall->getCallee(); in BuiltinVAStart()
4670 if (checkArgCount(TheCall, 2)) in BuiltinVAStart()
4674 if (checkBuiltinArgument(*this, TheCall, 0)) in BuiltinVAStart()
4687 const Expr *Arg = TheCall->getArg(1)->IgnoreParenCasts(); in BuiltinVAStart()
4689 TheCall->getArg(1)->getIntegerConstantExpr(Context); in BuiltinVAStart()
4711 Diag(TheCall->getArg(1)->getBeginLoc(), in BuiltinVAStart()
4798 bool Sema::BuiltinUnorderedCompare(CallExpr *TheCall, unsigned BuiltinID) { in BuiltinUnorderedCompare() argument
4799 if (checkArgCount(TheCall, 2)) in BuiltinUnorderedCompare()
4803 TheCall->getFPFeaturesInEffect(getLangOpts()).getNoHonorNaNs()) in BuiltinUnorderedCompare()
4804 Diag(TheCall->getBeginLoc(), diag::warn_fp_nan_inf_when_disabled) in BuiltinUnorderedCompare()
4805 << 1 << 0 << TheCall->getSourceRange(); in BuiltinUnorderedCompare()
4807 ExprResult OrigArg0 = TheCall->getArg(0); in BuiltinUnorderedCompare()
4808 ExprResult OrigArg1 = TheCall->getArg(1); in BuiltinUnorderedCompare()
4813 OrigArg0, OrigArg1, TheCall->getExprLoc(), ACK_Comparison); in BuiltinUnorderedCompare()
4820 TheCall->setArg(0, OrigArg0.get()); in BuiltinUnorderedCompare()
4821 TheCall->setArg(1, OrigArg1.get()); in BuiltinUnorderedCompare()
4838 bool Sema::BuiltinFPClassification(CallExpr *TheCall, unsigned NumArgs, in BuiltinFPClassification() argument
4840 if (checkArgCount(TheCall, NumArgs)) in BuiltinFPClassification()
4843 FPOptions FPO = TheCall->getFPFeaturesInEffect(getLangOpts()); in BuiltinFPClassification()
4847 Diag(TheCall->getBeginLoc(), diag::warn_fp_nan_inf_when_disabled) in BuiltinFPClassification()
4848 << 0 << 0 << TheCall->getSourceRange(); in BuiltinFPClassification()
4852 Diag(TheCall->getBeginLoc(), diag::warn_fp_nan_inf_when_disabled) in BuiltinFPClassification()
4853 << 1 << 0 << TheCall->getSourceRange(); in BuiltinFPClassification()
4863 Expr *Arg = TheCall->getArg(i); in BuiltinFPClassification()
4872 TheCall->setArg(i, Res.get()); in BuiltinFPClassification()
4875 Expr *OrigArg = TheCall->getArg(FPArgNo); in BuiltinFPClassification()
4887 TheCall->setArg(FPArgNo, OrigArg); in BuiltinFPClassification()
4907 if (BuiltinConstantArgRange(TheCall, 1, 0, llvm::fcAllFlags)) in BuiltinFPClassification()
4917 TheCall->setType(ResultTy); in BuiltinFPClassification()
4923 bool Sema::BuiltinComplex(CallExpr *TheCall) { in BuiltinComplex() argument
4924 if (checkArgCount(TheCall, 2)) in BuiltinComplex()
4929 Expr *Arg = TheCall->getArg(I); in BuiltinComplex()
4946 TheCall->setArg(I, Converted.get()); in BuiltinComplex()
4950 TheCall->setType(Context.DependentTy); in BuiltinComplex()
4954 Expr *Real = TheCall->getArg(0); in BuiltinComplex()
4955 Expr *Imag = TheCall->getArg(1); in BuiltinComplex()
4967 return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) in BuiltinComplex()
4970 return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) in BuiltinComplex()
4973 TheCall->setType(Context.getComplexType(Real->getType())); in BuiltinComplex()
4979 ExprResult Sema::BuiltinShuffleVector(CallExpr *TheCall) { in BuiltinShuffleVector() argument
4980 if (TheCall->getNumArgs() < 2) in BuiltinShuffleVector()
4981 return ExprError(Diag(TheCall->getEndLoc(), in BuiltinShuffleVector()
4983 << 0 /*function call*/ << 2 << TheCall->getNumArgs() in BuiltinShuffleVector()
4984 << /*is non object*/ 0 << TheCall->getSourceRange()); in BuiltinShuffleVector()
4989 QualType resType = TheCall->getArg(0)->getType(); in BuiltinShuffleVector()
4992 if (!TheCall->getArg(0)->isTypeDependent() && in BuiltinShuffleVector()
4993 !TheCall->getArg(1)->isTypeDependent()) { in BuiltinShuffleVector()
4994 QualType LHSType = TheCall->getArg(0)->getType(); in BuiltinShuffleVector()
4995 QualType RHSType = TheCall->getArg(1)->getType(); in BuiltinShuffleVector()
4999 Diag(TheCall->getBeginLoc(), diag::err_vec_builtin_non_vector) in BuiltinShuffleVector()
5000 << TheCall->getDirectCallee() << /*isMorethantwoArgs*/ false in BuiltinShuffleVector()
5001 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in BuiltinShuffleVector()
5002 TheCall->getArg(1)->getEndLoc())); in BuiltinShuffleVector()
5005 unsigned numResElements = TheCall->getNumArgs() - 2; in BuiltinShuffleVector()
5010 if (TheCall->getNumArgs() == 2) { in BuiltinShuffleVector()
5013 return ExprError(Diag(TheCall->getBeginLoc(), in BuiltinShuffleVector()
5015 << TheCall->getDirectCallee() in BuiltinShuffleVector()
5017 << SourceRange(TheCall->getArg(1)->getBeginLoc(), in BuiltinShuffleVector()
5018 TheCall->getArg(1)->getEndLoc())); in BuiltinShuffleVector()
5020 return ExprError(Diag(TheCall->getBeginLoc(), in BuiltinShuffleVector()
5022 << TheCall->getDirectCallee() in BuiltinShuffleVector()
5024 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in BuiltinShuffleVector()
5025 TheCall->getArg(1)->getEndLoc())); in BuiltinShuffleVector()
5033 for (unsigned i = 2; i < TheCall->getNumArgs(); i++) { in BuiltinShuffleVector()
5034 if (TheCall->getArg(i)->isTypeDependent() || in BuiltinShuffleVector()
5035 TheCall->getArg(i)->isValueDependent()) in BuiltinShuffleVector()
5039 if (!(Result = TheCall->getArg(i)->getIntegerConstantExpr(Context))) in BuiltinShuffleVector()
5040 return ExprError(Diag(TheCall->getBeginLoc(), in BuiltinShuffleVector()
5042 << TheCall->getArg(i)->getSourceRange()); in BuiltinShuffleVector()
5050 return ExprError(Diag(TheCall->getBeginLoc(), in BuiltinShuffleVector()
5052 << TheCall->getArg(i)->getSourceRange()); in BuiltinShuffleVector()
5057 for (unsigned i = 0, e = TheCall->getNumArgs(); i != e; i++) { in BuiltinShuffleVector()
5058 exprs.push_back(TheCall->getArg(i)); in BuiltinShuffleVector()
5059 TheCall->setArg(i, nullptr); in BuiltinShuffleVector()
5063 TheCall->getCallee()->getBeginLoc(), in BuiltinShuffleVector()
5064 TheCall->getRParenLoc()); in BuiltinShuffleVector()
5097 bool Sema::BuiltinPrefetch(CallExpr *TheCall) { in BuiltinPrefetch() argument
5098 unsigned NumArgs = TheCall->getNumArgs(); in BuiltinPrefetch()
5101 return Diag(TheCall->getEndLoc(), in BuiltinPrefetch()
5104 << TheCall->getSourceRange(); in BuiltinPrefetch()
5109 if (BuiltinConstantArgRange(TheCall, i, 0, i == 1 ? 1 : 3)) in BuiltinPrefetch()
5115 bool Sema::BuiltinArithmeticFence(CallExpr *TheCall) { in BuiltinArithmeticFence() argument
5117 return Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in BuiltinArithmeticFence()
5118 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in BuiltinArithmeticFence()
5119 if (checkArgCount(TheCall, 1)) in BuiltinArithmeticFence()
5121 Expr *Arg = TheCall->getArg(0); in BuiltinArithmeticFence()
5127 return Diag(TheCall->getEndLoc(), diag::err_typecheck_expect_flt_or_vector) in BuiltinArithmeticFence()
5131 TheCall->setArg(0, FirstArg.get()); in BuiltinArithmeticFence()
5133 TheCall->setType(TheCall->getArg(0)->getType()); in BuiltinArithmeticFence()
5137 bool Sema::BuiltinAssume(CallExpr *TheCall) { in BuiltinAssume() argument
5138 Expr *Arg = TheCall->getArg(0); in BuiltinAssume()
5144 << cast<FunctionDecl>(TheCall->getCalleeDecl())->getIdentifier(); in BuiltinAssume()
5149 bool Sema::BuiltinAllocaWithAlign(CallExpr *TheCall) { in BuiltinAllocaWithAlign() argument
5151 Expr *Arg = TheCall->getArg(1); in BuiltinAllocaWithAlign()
5159 Diag(TheCall->getBeginLoc(), diag::warn_alloca_align_alignof) in BuiltinAllocaWithAlign()
5165 return Diag(TheCall->getBeginLoc(), diag::err_alignment_not_power_of_two) in BuiltinAllocaWithAlign()
5169 return Diag(TheCall->getBeginLoc(), diag::err_alignment_too_small) in BuiltinAllocaWithAlign()
5173 return Diag(TheCall->getBeginLoc(), diag::err_alignment_too_big) in BuiltinAllocaWithAlign()
5180 bool Sema::BuiltinAssumeAligned(CallExpr *TheCall) { in BuiltinAssumeAligned() argument
5181 if (checkArgCountRange(TheCall, 2, 3)) in BuiltinAssumeAligned()
5184 unsigned NumArgs = TheCall->getNumArgs(); in BuiltinAssumeAligned()
5185 Expr *FirstArg = TheCall->getArg(0); in BuiltinAssumeAligned()
5190 if (checkBuiltinArgument(*this, TheCall, 0)) in BuiltinAssumeAligned()
5193 TheCall->setArg(0, FirstArgResult.get()); in BuiltinAssumeAligned()
5197 Expr *SecondArg = TheCall->getArg(1); in BuiltinAssumeAligned()
5202 if (BuiltinConstantArg(TheCall, 1, Result)) in BuiltinAssumeAligned()
5206 return Diag(TheCall->getBeginLoc(), diag::err_alignment_not_power_of_two) in BuiltinAssumeAligned()
5210 Diag(TheCall->getBeginLoc(), diag::warn_assume_aligned_too_great) in BuiltinAssumeAligned()
5215 Expr *ThirdArg = TheCall->getArg(2); in BuiltinAssumeAligned()
5218 TheCall->setArg(2, ThirdArg); in BuiltinAssumeAligned()
5224 bool Sema::BuiltinOSLogFormat(CallExpr *TheCall) { in BuiltinOSLogFormat() argument
5226 cast<FunctionDecl>(TheCall->getCalleeDecl())->getBuiltinID(); in BuiltinOSLogFormat()
5229 unsigned NumArgs = TheCall->getNumArgs(); in BuiltinOSLogFormat()
5232 return Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args) in BuiltinOSLogFormat()
5234 << /*is non object*/ 0 << TheCall->getSourceRange(); in BuiltinOSLogFormat()
5237 return Diag(TheCall->getEndLoc(), in BuiltinOSLogFormat()
5240 << /*is non object*/ 0 << TheCall->getSourceRange(); in BuiltinOSLogFormat()
5246 ExprResult Arg(TheCall->getArg(i)); in BuiltinOSLogFormat()
5252 TheCall->setArg(i, Arg.get()); in BuiltinOSLogFormat()
5259 ExprResult Arg = CheckOSLogFormatStringArg(TheCall->getArg(i)); in BuiltinOSLogFormat()
5262 TheCall->setArg(i, Arg.get()); in BuiltinOSLogFormat()
5270 TheCall->getArg(i), VariadicFunction, nullptr); in BuiltinOSLogFormat()
5277 << TheCall->getSourceRange(); in BuiltinOSLogFormat()
5279 TheCall->setArg(i, Arg.get()); in BuiltinOSLogFormat()
5287 ArrayRef<const Expr *> Args(TheCall->getArgs(), TheCall->getNumArgs()); in BuiltinOSLogFormat()
5290 VariadicFunction, TheCall->getBeginLoc(), SourceRange(), in BuiltinOSLogFormat()
5297 TheCall->setType(Context.getSizeType()); in BuiltinOSLogFormat()
5299 TheCall->setType(Context.VoidPtrTy); in BuiltinOSLogFormat()
5304 bool Sema::BuiltinConstantArg(CallExpr *TheCall, int ArgNum, in BuiltinConstantArg() argument
5306 Expr *Arg = TheCall->getArg(ArgNum); in BuiltinConstantArg()
5307 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in BuiltinConstantArg()
5314 return Diag(TheCall->getBeginLoc(), diag::err_constant_integer_arg_type) in BuiltinConstantArg()
5320 bool Sema::BuiltinConstantArgRange(CallExpr *TheCall, int ArgNum, int Low, in BuiltinConstantArgRange() argument
5327 Expr *Arg = TheCall->getArg(ArgNum); in BuiltinConstantArgRange()
5332 if (BuiltinConstantArg(TheCall, ArgNum, Result)) in BuiltinConstantArgRange()
5337 return Diag(TheCall->getBeginLoc(), diag::err_argument_invalid_range) in BuiltinConstantArgRange()
5342 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in BuiltinConstantArgRange()
5351 bool Sema::BuiltinConstantArgMultiple(CallExpr *TheCall, int ArgNum, in BuiltinConstantArgMultiple() argument
5356 Expr *Arg = TheCall->getArg(ArgNum); in BuiltinConstantArgMultiple()
5361 if (BuiltinConstantArg(TheCall, ArgNum, Result)) in BuiltinConstantArgMultiple()
5365 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_multiple) in BuiltinConstantArgMultiple()
5371 bool Sema::BuiltinConstantArgPower2(CallExpr *TheCall, int ArgNum) { in BuiltinConstantArgPower2() argument
5375 Expr *Arg = TheCall->getArg(ArgNum); in BuiltinConstantArgPower2()
5380 if (BuiltinConstantArg(TheCall, ArgNum, Result)) in BuiltinConstantArgPower2()
5388 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_power_of_2) in BuiltinConstantArgPower2()
5414 bool Sema::BuiltinConstantArgShiftedByte(CallExpr *TheCall, int ArgNum, in BuiltinConstantArgShiftedByte() argument
5419 Expr *Arg = TheCall->getArg(ArgNum); in BuiltinConstantArgShiftedByte()
5424 if (BuiltinConstantArg(TheCall, ArgNum, Result)) in BuiltinConstantArgShiftedByte()
5434 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_shifted_byte) in BuiltinConstantArgShiftedByte()
5438 bool Sema::BuiltinConstantArgShiftedByteOrXXFF(CallExpr *TheCall, int ArgNum, in BuiltinConstantArgShiftedByteOrXXFF() argument
5443 Expr *Arg = TheCall->getArg(ArgNum); in BuiltinConstantArgShiftedByteOrXXFF()
5448 if (BuiltinConstantArg(TheCall, ArgNum, Result)) in BuiltinConstantArgShiftedByteOrXXFF()
5460 return Diag(TheCall->getBeginLoc(), in BuiltinConstantArgShiftedByteOrXXFF()
5465 bool Sema::BuiltinLongjmp(CallExpr *TheCall) { in BuiltinLongjmp() argument
5467 return Diag(TheCall->getBeginLoc(), diag::err_builtin_longjmp_unsupported) in BuiltinLongjmp()
5468 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in BuiltinLongjmp()
5470 Expr *Arg = TheCall->getArg(1); in BuiltinLongjmp()
5474 if (BuiltinConstantArg(TheCall, 1, Result)) in BuiltinLongjmp()
5478 return Diag(TheCall->getBeginLoc(), diag::err_builtin_longjmp_invalid_val) in BuiltinLongjmp()
5484 bool Sema::BuiltinSetjmp(CallExpr *TheCall) { in BuiltinSetjmp() argument
5486 return Diag(TheCall->getBeginLoc(), diag::err_builtin_setjmp_unsupported) in BuiltinSetjmp()
5487 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in BuiltinSetjmp()
10590 static void CheckImplicitArgumentConversions(Sema &S, CallExpr *TheCall, in CheckImplicitArgumentConversions() argument
10592 unsigned NumArgs = TheCall->getNumArgs(); in CheckImplicitArgumentConversions()
10594 Expr *CurrA = TheCall->getArg(i); in CheckImplicitArgumentConversions()
10599 IsImplicitBoolFloatConversion(S, TheCall->getArg(i - 1), false)); in CheckImplicitArgumentConversions()
10601 IsImplicitBoolFloatConversion(S, TheCall->getArg(i + 1), false)); in CheckImplicitArgumentConversions()
14259 bool Sema::PrepareBuiltinElementwiseMathOneArgCall(CallExpr *TheCall) { in PrepareBuiltinElementwiseMathOneArgCall() argument
14260 if (checkArgCount(TheCall, 1)) in PrepareBuiltinElementwiseMathOneArgCall()
14263 ExprResult A = UsualUnaryConversions(TheCall->getArg(0)); in PrepareBuiltinElementwiseMathOneArgCall()
14267 TheCall->setArg(0, A.get()); in PrepareBuiltinElementwiseMathOneArgCall()
14273 TheCall->setType(TyA); in PrepareBuiltinElementwiseMathOneArgCall()
14277 bool Sema::BuiltinElementwiseMath(CallExpr *TheCall) { in BuiltinElementwiseMath() argument
14279 if (BuiltinVectorMath(TheCall, Res)) in BuiltinElementwiseMath()
14281 TheCall->setType(Res); in BuiltinElementwiseMath()
14285 bool Sema::BuiltinVectorToScalarMath(CallExpr *TheCall) { in BuiltinVectorToScalarMath() argument
14287 if (BuiltinVectorMath(TheCall, Res)) in BuiltinVectorToScalarMath()
14291 TheCall->setType(VecTy0->getElementType()); in BuiltinVectorToScalarMath()
14293 TheCall->setType(Res); in BuiltinVectorToScalarMath()
14298 bool Sema::BuiltinVectorMath(CallExpr *TheCall, QualType &Res) { in BuiltinVectorMath() argument
14299 if (checkArgCount(TheCall, 2)) in BuiltinVectorMath()
14302 ExprResult A = TheCall->getArg(0); in BuiltinVectorMath()
14303 ExprResult B = TheCall->getArg(1); in BuiltinVectorMath()
14306 Res = UsualArithmeticConversions(A, B, TheCall->getExprLoc(), ACK_Comparison); in BuiltinVectorMath()
14321 TheCall->setArg(0, A.get()); in BuiltinVectorMath()
14322 TheCall->setArg(1, B.get()); in BuiltinVectorMath()
14326 bool Sema::BuiltinElementwiseTernaryMath(CallExpr *TheCall, in BuiltinElementwiseTernaryMath() argument
14328 if (checkArgCount(TheCall, 3)) in BuiltinElementwiseTernaryMath()
14333 ExprResult Converted = UsualUnaryConversions(TheCall->getArg(I)); in BuiltinElementwiseTernaryMath()
14363 TheCall->setArg(I, Args[I]); in BuiltinElementwiseTernaryMath()
14366 TheCall->setType(Args[0]->getType()); in BuiltinElementwiseTernaryMath()
14370 bool Sema::PrepareBuiltinReduceMathOneArgCall(CallExpr *TheCall) { in PrepareBuiltinReduceMathOneArgCall() argument
14371 if (checkArgCount(TheCall, 1)) in PrepareBuiltinReduceMathOneArgCall()
14374 ExprResult A = UsualUnaryConversions(TheCall->getArg(0)); in PrepareBuiltinReduceMathOneArgCall()
14378 TheCall->setArg(0, A.get()); in PrepareBuiltinReduceMathOneArgCall()
14382 bool Sema::BuiltinNonDeterministicValue(CallExpr *TheCall) { in BuiltinNonDeterministicValue() argument
14383 if (checkArgCount(TheCall, 1)) in BuiltinNonDeterministicValue()
14386 ExprResult Arg = TheCall->getArg(0); in BuiltinNonDeterministicValue()
14390 return Diag(TheCall->getArg(0)->getBeginLoc(), diag::err_builtin_invalid_arg_type) in BuiltinNonDeterministicValue()
14393 TheCall->setType(TyArg); in BuiltinNonDeterministicValue()
14397 ExprResult Sema::BuiltinMatrixTranspose(CallExpr *TheCall, in BuiltinMatrixTranspose() argument
14399 if (checkArgCount(TheCall, 1)) in BuiltinMatrixTranspose()
14402 ExprResult MatrixArg = DefaultLvalueConversion(TheCall->getArg(0)); in BuiltinMatrixTranspose()
14420 TheCall->setType(ResultType); in BuiltinMatrixTranspose()
14423 TheCall->setArg(0, Matrix); in BuiltinMatrixTranspose()
14447 ExprResult Sema::BuiltinMatrixColumnMajorLoad(CallExpr *TheCall, in BuiltinMatrixColumnMajorLoad() argument
14450 Diag(TheCall->getBeginLoc(), diag::err_builtin_matrix_disabled); in BuiltinMatrixColumnMajorLoad()
14454 if (checkArgCount(TheCall, 4)) in BuiltinMatrixColumnMajorLoad()
14458 Expr *PtrExpr = TheCall->getArg(PtrArgIdx); in BuiltinMatrixColumnMajorLoad()
14459 Expr *RowsExpr = TheCall->getArg(1); in BuiltinMatrixColumnMajorLoad()
14460 Expr *ColumnsExpr = TheCall->getArg(2); in BuiltinMatrixColumnMajorLoad()
14461 Expr *StrideExpr = TheCall->getArg(3); in BuiltinMatrixColumnMajorLoad()
14471 TheCall->setArg(0, PtrExpr); in BuiltinMatrixColumnMajorLoad()
14473 TheCall->setType(Context.DependentTy); in BuiltinMatrixColumnMajorLoad()
14474 return TheCall; in BuiltinMatrixColumnMajorLoad()
14508 TheCall->setArg(1, RowsExpr); in BuiltinMatrixColumnMajorLoad()
14515 TheCall->setArg(2, ColumnsExpr); in BuiltinMatrixColumnMajorLoad()
14523 TheCall->setType(Context.DependentTy); in BuiltinMatrixColumnMajorLoad()
14541 TheCall->setArg(3, StrideExpr); in BuiltinMatrixColumnMajorLoad()
14558 TheCall->setType( in BuiltinMatrixColumnMajorLoad()
14563 ExprResult Sema::BuiltinMatrixColumnMajorStore(CallExpr *TheCall, in BuiltinMatrixColumnMajorStore() argument
14565 if (checkArgCount(TheCall, 3)) in BuiltinMatrixColumnMajorStore()
14569 Expr *MatrixExpr = TheCall->getArg(0); in BuiltinMatrixColumnMajorStore()
14570 Expr *PtrExpr = TheCall->getArg(PtrArgIdx); in BuiltinMatrixColumnMajorStore()
14571 Expr *StrideExpr = TheCall->getArg(2); in BuiltinMatrixColumnMajorStore()
14580 TheCall->setArg(0, MatrixExpr); in BuiltinMatrixColumnMajorStore()
14583 TheCall->setType(Context.DependentTy); in BuiltinMatrixColumnMajorStore()
14584 return TheCall; in BuiltinMatrixColumnMajorStore()
14599 TheCall->setArg(1, PtrExpr); in BuiltinMatrixColumnMajorStore()
14601 TheCall->setType(Context.DependentTy); in BuiltinMatrixColumnMajorStore()
14602 return TheCall; in BuiltinMatrixColumnMajorStore()
14639 TheCall->setArg(2, StrideExpr); in BuiltinMatrixColumnMajorStore()