Lines Matching refs:TheCall

190 static bool SemaBuiltinAnnotation(Sema &S, CallExpr *TheCall) {  in SemaBuiltinAnnotation()  argument
191 if (checkArgCount(S, TheCall, 2)) in SemaBuiltinAnnotation()
195 Expr *ValArg = TheCall->getArg(0); in SemaBuiltinAnnotation()
204 Expr *StrArg = TheCall->getArg(1)->IgnoreParenCasts(); in SemaBuiltinAnnotation()
212 TheCall->setType(Ty); in SemaBuiltinAnnotation()
216 static bool SemaBuiltinMSVCAnnotation(Sema &S, CallExpr *TheCall) { in SemaBuiltinMSVCAnnotation() argument
218 if (TheCall->getNumArgs() < 1) { in SemaBuiltinMSVCAnnotation()
219 S.Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in SemaBuiltinMSVCAnnotation()
220 << 0 << 1 << TheCall->getNumArgs() << /*is non object*/ 0 in SemaBuiltinMSVCAnnotation()
221 << TheCall->getCallee()->getSourceRange(); in SemaBuiltinMSVCAnnotation()
226 for (Expr *Arg : TheCall->arguments()) { in SemaBuiltinMSVCAnnotation()
240 static bool SemaBuiltinAddressof(Sema &S, CallExpr *TheCall) { in SemaBuiltinAddressof() argument
241 if (checkArgCount(S, TheCall, 1)) in SemaBuiltinAddressof()
244 ExprResult Arg(TheCall->getArg(0)); in SemaBuiltinAddressof()
245 QualType ResultType = S.CheckAddressOfOperand(Arg, TheCall->getBeginLoc()); in SemaBuiltinAddressof()
249 TheCall->setArg(0, Arg.get()); in SemaBuiltinAddressof()
250 TheCall->setType(ResultType); in SemaBuiltinAddressof()
255 static bool SemaBuiltinFunctionStart(Sema &S, CallExpr *TheCall) { in SemaBuiltinFunctionStart() argument
256 if (checkArgCount(S, TheCall, 1)) in SemaBuiltinFunctionStart()
259 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(0)); in SemaBuiltinFunctionStart()
263 TheCall->setArg(0, Arg.get()); in SemaBuiltinFunctionStart()
268 S.Diag(TheCall->getBeginLoc(), diag::err_function_start_invalid_type) in SemaBuiltinFunctionStart()
269 << TheCall->getSourceRange(); in SemaBuiltinFunctionStart()
274 TheCall->getBeginLoc()); in SemaBuiltinFunctionStart()
279 static bool SemaBuiltinPreserveAI(Sema &S, CallExpr *TheCall) { in SemaBuiltinPreserveAI() argument
280 if (checkArgCount(S, TheCall, 1)) in SemaBuiltinPreserveAI()
283 TheCall->setType(TheCall->getArg(0)->getType()); in SemaBuiltinPreserveAI()
290 static bool SemaBuiltinAlignment(Sema &S, CallExpr *TheCall, unsigned ID) { in SemaBuiltinAlignment() argument
291 if (checkArgCount(S, TheCall, 2)) in SemaBuiltinAlignment()
294 clang::Expr *Source = TheCall->getArg(0); in SemaBuiltinAlignment()
314 clang::Expr *AlignOp = TheCall->getArg(1); in SemaBuiltinAlignment()
353 TheCall->setArg(0, SrcArg.get()); in SemaBuiltinAlignment()
360 TheCall->setArg(1, AlignArg.get()); in SemaBuiltinAlignment()
364 TheCall->setType(IsBooleanAlignBuiltin ? S.Context.BoolTy : SrcTy); in SemaBuiltinAlignment()
368 static bool SemaBuiltinOverflow(Sema &S, CallExpr *TheCall, in SemaBuiltinOverflow() argument
370 if (checkArgCount(S, TheCall, 3)) in SemaBuiltinOverflow()
381 return BuiltinID == P.first && TheCall->getExprLoc().isMacroID() && in SemaBuiltinOverflow()
382 Lexer::getImmediateMacroName(TheCall->getExprLoc(), in SemaBuiltinOverflow()
401 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(I)); in SemaBuiltinOverflow()
403 TheCall->setArg(I, Arg.get()); in SemaBuiltinOverflow()
418 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(2)); in SemaBuiltinOverflow()
420 TheCall->setArg(2, Arg.get()); in SemaBuiltinOverflow()
439 const auto Arg = TheCall->getArg(I); in SemaBuiltinOverflow()
456 CallExpr *TheCall; member
457 SourceLocation Loc = TheCall->getBeginLoc();
462 BuiltinDumpStructGenerator(Sema &S, CallExpr *TheCall) in BuiltinDumpStructGenerator()
463 : S(S), TheCall(TheCall), ErrorTracker(S.getDiagnostics()), in BuiltinDumpStructGenerator()
485 assert(TheCall->getNumArgs() >= 2);
486 Args.reserve((TheCall->getNumArgs() - 2) + /*Format*/ 1 + Exprs.size());
487 Args.assign(TheCall->arg_begin() + 2, TheCall->arg_end());
500 S.BuildCallExpr(/*Scope=*/nullptr, TheCall->getArg(1),
501 TheCall->getBeginLoc(), Args, TheCall->getRParenLoc());
688 auto *Wrapper = PseudoObjectExpr::Create(S.Context, TheCall, Actions, in buildWrapper()
690 TheCall->setType(Wrapper->getType()); in buildWrapper()
691 TheCall->setValueKind(Wrapper->getValueKind()); in buildWrapper()
697 static ExprResult SemaBuiltinDumpStruct(Sema &S, CallExpr *TheCall) { in SemaBuiltinDumpStruct() argument
698 if (checkArgCountAtLeast(S, TheCall, 2)) in SemaBuiltinDumpStruct()
701 ExprResult PtrArgResult = S.DefaultLvalueConversion(TheCall->getArg(0)); in SemaBuiltinDumpStruct()
704 TheCall->setArg(0, PtrArgResult.get()); in SemaBuiltinDumpStruct()
712 << 1 << TheCall->getDirectCallee() << PtrArgType; in SemaBuiltinDumpStruct()
724 QualType FnArgType = TheCall->getArg(1)->getType(); in SemaBuiltinDumpStruct()
740 S.Diag(TheCall->getArg(1)->getBeginLoc(), in SemaBuiltinDumpStruct()
742 << 2 << TheCall->getDirectCallee() << FnArgType; in SemaBuiltinDumpStruct()
747 BuiltinDumpStructGenerator Generator(S, TheCall); in SemaBuiltinDumpStruct()
1110 CallExpr *TheCall) { in checkFortifiedBuiltinMemoryFunction() argument
1111 if (TheCall->isValueDependent() || TheCall->isTypeDependent() || in checkFortifiedBuiltinMemoryFunction()
1144 if (NewIndex >= TheCall->getNumArgs()) in checkFortifiedBuiltinMemoryFunction()
1156 Expr *SizeArg = TheCall->getArg(NewIndex); in checkFortifiedBuiltinMemoryFunction()
1182 if (NewIndex >= TheCall->getNumArgs()) in checkFortifiedBuiltinMemoryFunction()
1185 const Expr *ObjArg = TheCall->getArg(NewIndex); in checkFortifiedBuiltinMemoryFunction()
1201 const Expr *ObjArg = TheCall->getArg(NewIndex); in checkFortifiedBuiltinMemoryFunction()
1258 TheCall->getArg(FormatIndex)->IgnoreParenImpCasts(); in checkFortifiedBuiltinMemoryFunction()
1270 DiagRuntimeBehavior(TheCall->getArg(Index)->getBeginLoc(), TheCall, in checkFortifiedBuiltinMemoryFunction()
1293 auto *FormatExpr = TheCall->getArg(FormatIndex)->IgnoreParenImpCasts(); in checkFortifiedBuiltinMemoryFunction()
1330 SourceSize = ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 2); in checkFortifiedBuiltinMemoryFunction()
1332 ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 1); in checkFortifiedBuiltinMemoryFunction()
1358 SourceSize = ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 1); in checkFortifiedBuiltinMemoryFunction()
1372 SourceSize = ComputeExplicitObjectSizeArgument(TheCall->getNumArgs() - 1); in checkFortifiedBuiltinMemoryFunction()
1382 const auto *FormatExpr = TheCall->getArg(2)->IgnoreParenImpCasts(); in checkFortifiedBuiltinMemoryFunction()
1403 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in checkFortifiedBuiltinMemoryFunction()
1424 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in checkFortifiedBuiltinMemoryFunction()
1429 static bool SemaBuiltinSEHScopeCheck(Sema &SemaRef, CallExpr *TheCall, in SemaBuiltinSEHScopeCheck() argument
1442 auto *DRE = cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaBuiltinSEHScopeCheck()
1443 SemaRef.Diag(TheCall->getExprLoc(), DiagID) in SemaBuiltinSEHScopeCheck()
1505 static bool SemaOpenCLBuiltinNDRangeAndBlock(Sema &S, CallExpr *TheCall) { in SemaOpenCLBuiltinNDRangeAndBlock() argument
1506 if (checkArgCount(S, TheCall, 2)) in SemaOpenCLBuiltinNDRangeAndBlock()
1509 if (checkOpenCLSubgroupExt(S, TheCall)) in SemaOpenCLBuiltinNDRangeAndBlock()
1513 Expr *NDRangeArg = TheCall->getArg(0); in SemaOpenCLBuiltinNDRangeAndBlock()
1516 << TheCall->getDirectCallee() << "'ndrange_t'"; in SemaOpenCLBuiltinNDRangeAndBlock()
1520 Expr *BlockArg = TheCall->getArg(1); in SemaOpenCLBuiltinNDRangeAndBlock()
1523 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinNDRangeAndBlock()
1532 static bool SemaOpenCLBuiltinKernelWorkGroupSize(Sema &S, CallExpr *TheCall) { in SemaOpenCLBuiltinKernelWorkGroupSize() argument
1533 if (checkArgCount(S, TheCall, 1)) in SemaOpenCLBuiltinKernelWorkGroupSize()
1536 Expr *BlockArg = TheCall->getArg(0); in SemaOpenCLBuiltinKernelWorkGroupSize()
1539 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinKernelWorkGroupSize()
1549 static bool checkOpenCLEnqueueLocalSizeArgs(Sema &S, CallExpr *TheCall, in checkOpenCLEnqueueLocalSizeArgs() argument
1553 IllegalParams |= checkOpenCLEnqueueIntType(S, TheCall->getArg(I), in checkOpenCLEnqueueLocalSizeArgs()
1560 static bool checkOpenCLEnqueueVariadicArgs(Sema &S, CallExpr *TheCall, in checkOpenCLEnqueueVariadicArgs() argument
1567 unsigned TotalNumArgs = TheCall->getNumArgs(); in checkOpenCLEnqueueVariadicArgs()
1572 S.Diag(TheCall->getBeginLoc(), in checkOpenCLEnqueueVariadicArgs()
1578 return checkOpenCLEnqueueLocalSizeArgs(S, TheCall, NumNonVarArgs, in checkOpenCLEnqueueVariadicArgs()
1608 static bool SemaOpenCLBuiltinEnqueueKernel(Sema &S, CallExpr *TheCall) { in SemaOpenCLBuiltinEnqueueKernel() argument
1609 unsigned NumArgs = TheCall->getNumArgs(); in SemaOpenCLBuiltinEnqueueKernel()
1612 S.Diag(TheCall->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1618 Expr *Arg0 = TheCall->getArg(0); in SemaOpenCLBuiltinEnqueueKernel()
1619 Expr *Arg1 = TheCall->getArg(1); in SemaOpenCLBuiltinEnqueueKernel()
1620 Expr *Arg2 = TheCall->getArg(2); in SemaOpenCLBuiltinEnqueueKernel()
1621 Expr *Arg3 = TheCall->getArg(3); in SemaOpenCLBuiltinEnqueueKernel()
1625 S.Diag(TheCall->getArg(0)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1627 << TheCall->getDirectCallee() << S.Context.OCLQueueTy; in SemaOpenCLBuiltinEnqueueKernel()
1633 S.Diag(TheCall->getArg(1)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1635 << TheCall->getDirectCallee() << "'kernel_enqueue_flags_t' (i.e. uint)"; in SemaOpenCLBuiltinEnqueueKernel()
1641 S.Diag(TheCall->getArg(2)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1643 << TheCall->getDirectCallee() << "'ndrange_t'"; in SemaOpenCLBuiltinEnqueueKernel()
1653 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinEnqueueKernel()
1669 checkOpenCLEnqueueVariadicArgs(S, TheCall, Arg3, 4)); in SemaOpenCLBuiltinEnqueueKernel()
1673 Expr *Arg6 = TheCall->getArg(6); in SemaOpenCLBuiltinEnqueueKernel()
1676 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinEnqueueKernel()
1684 S.Diag(TheCall->getArg(3)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1686 << TheCall->getDirectCallee() << "integer"; in SemaOpenCLBuiltinEnqueueKernel()
1690 Expr *Arg4 = TheCall->getArg(4); in SemaOpenCLBuiltinEnqueueKernel()
1691 Expr *Arg5 = TheCall->getArg(5); in SemaOpenCLBuiltinEnqueueKernel()
1697 S.Diag(TheCall->getArg(4)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1699 << TheCall->getDirectCallee() in SemaOpenCLBuiltinEnqueueKernel()
1709 S.Diag(TheCall->getArg(5)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1711 << TheCall->getDirectCallee() in SemaOpenCLBuiltinEnqueueKernel()
1719 return checkOpenCLEnqueueVariadicArgs(S, TheCall, Arg6, 7); in SemaOpenCLBuiltinEnqueueKernel()
1723 S.Diag(TheCall->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1974 static ExprResult SemaBuiltinLaunder(Sema &S, CallExpr *TheCall) { in SemaBuiltinLaunder() argument
1975 if (checkArgCount(S, TheCall, 1)) in SemaBuiltinLaunder()
1984 QualType ArgTy = TheCall->getArg(0)->getType(); in SemaBuiltinLaunder()
1993 TheCall->setType(ParamTy); in SemaBuiltinLaunder()
2005 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_launder_invalid_arg) in SemaBuiltinLaunder()
2006 << *DiagSelect << TheCall->getSourceRange(); in SemaBuiltinLaunder()
2016 if (S.RequireCompleteType(TheCall->getBeginLoc(), ParamTy->getPointeeType(), in SemaBuiltinLaunder()
2026 S.PerformCopyInitialization(Entity, SourceLocation(), TheCall->getArg(0)); in SemaBuiltinLaunder()
2029 TheCall->setArg(0, Arg.get()); in SemaBuiltinLaunder()
2031 return TheCall; in SemaBuiltinLaunder()
2037 Sema &S, unsigned BuiltinID, CallExpr *TheCall, in CheckBuiltinTargetNotInUnsupported() argument
2042 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in CheckBuiltinTargetNotInUnsupported()
2043 << TheCall->getSourceRange(); in CheckBuiltinTargetNotInUnsupported()
2052 CheckBuiltinTargetInSupported(Sema &S, unsigned BuiltinID, CallExpr *TheCall, in CheckBuiltinTargetInSupported() argument
2058 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in CheckBuiltinTargetInSupported()
2059 << TheCall->getSourceRange(); in CheckBuiltinTargetInSupported()
2067 CallExpr *TheCall) { in CheckTSBuiltinFunctionCall() argument
2077 return CheckARMBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2081 return CheckAArch64BuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2084 return CheckBPFBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2086 return CheckHexagonBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2091 return CheckMipsBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2093 return CheckSystemZBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2096 return CheckX86BuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2101 return CheckPPCBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2103 return CheckAMDGCNBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2106 return CheckRISCVBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2109 return CheckLoongArchBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2112 return CheckWebAssemblyBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2115 return CheckNVPTXBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
2148 CallExpr *TheCall) { in CheckBuiltinFunctionCall() argument
2149 ExprResult TheCallResult(TheCall); in CheckBuiltinFunctionCall()
2166 if (ArgNo < TheCall->getNumArgs() && in CheckBuiltinFunctionCall()
2167 SemaBuiltinConstantArg(TheCall, ArgNo, Result)) in CheckBuiltinFunctionCall()
2178 *this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2181 assert(TheCall->getNumArgs() == 1 && in CheckBuiltinFunctionCall()
2183 if (CheckObjCString(TheCall->getArg(0))) in CheckBuiltinFunctionCall()
2189 if (SemaBuiltinVAStart(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
2197 if (SemaBuiltinVAStartARMMicrosoft(TheCall)) in CheckBuiltinFunctionCall()
2201 if (SemaBuiltinVAStart(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
2216 *this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2228 if (CheckBuiltinTargetInSupported(*this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2236 if (CheckBuiltinTargetInSupported(*this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
2249 if (SemaBuiltinUnorderedCompare(TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
2253 if (SemaBuiltinFPClassification(TheCall, 6, BuiltinID)) in CheckBuiltinFunctionCall()
2257 if (SemaBuiltinFPClassification(TheCall, 2, BuiltinID)) in CheckBuiltinFunctionCall()
2271 if (SemaBuiltinFPClassification(TheCall, 1, BuiltinID)) in CheckBuiltinFunctionCall()
2275 return SemaBuiltinShuffleVector(TheCall); in CheckBuiltinFunctionCall()
2279 if (SemaBuiltinPrefetch(TheCall)) in CheckBuiltinFunctionCall()
2284 if (SemaBuiltinAllocaWithAlign(TheCall)) in CheckBuiltinFunctionCall()
2289 Diag(TheCall->getBeginLoc(), diag::warn_alloca) in CheckBuiltinFunctionCall()
2290 << TheCall->getDirectCallee(); in CheckBuiltinFunctionCall()
2293 if (SemaBuiltinArithmeticFence(TheCall)) in CheckBuiltinFunctionCall()
2298 if (SemaBuiltinAssume(TheCall)) in CheckBuiltinFunctionCall()
2302 if (SemaBuiltinAssumeAligned(TheCall)) in CheckBuiltinFunctionCall()
2307 if (SemaBuiltinConstantArgRange(TheCall, 1, 0, 3)) in CheckBuiltinFunctionCall()
2311 if (SemaBuiltinLongjmp(TheCall)) in CheckBuiltinFunctionCall()
2315 if (SemaBuiltinSetjmp(TheCall)) in CheckBuiltinFunctionCall()
2319 if (checkArgCount(*this, TheCall, 1)) return true; in CheckBuiltinFunctionCall()
2320 TheCall->setType(Context.IntTy); in CheckBuiltinFunctionCall()
2323 if (SemaBuiltinComplex(TheCall)) in CheckBuiltinFunctionCall()
2327 if (checkArgCount(*this, TheCall, 1)) return true; in CheckBuiltinFunctionCall()
2328 ExprResult Arg = DefaultFunctionArrayLvalueConversion(TheCall->getArg(0)); in CheckBuiltinFunctionCall()
2330 TheCall->setArg(0, Arg.get()); in CheckBuiltinFunctionCall()
2331 TheCall->setType(Context.IntTy); in CheckBuiltinFunctionCall()
2335 return SemaBuiltinLaunder(*this, TheCall); in CheckBuiltinFunctionCall()
2440 Diag(TheCall->getBeginLoc(), diag::warn_atomic_implicit_seq_cst) in CheckBuiltinFunctionCall()
2441 << TheCall->getCallee()->getSourceRange(); in CheckBuiltinFunctionCall()
2447 clang::Expr *SizeOp = TheCall->getArg(2); in CheckBuiltinFunctionCall()
2454 CheckNonNullArgument(*this, TheCall->getArg(0), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
2455 CheckNonNullArgument(*this, TheCall->getArg(1), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
2460 clang::Expr *SizeOp = TheCall->getArg(2); in CheckBuiltinFunctionCall()
2467 CheckNonNullArgument(*this, TheCall->getArg(0), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
2476 if (SemaBuiltinMSVCAnnotation(*this, TheCall)) in CheckBuiltinFunctionCall()
2480 if (SemaBuiltinAnnotation(*this, TheCall)) in CheckBuiltinFunctionCall()
2484 if (SemaBuiltinAddressof(*this, TheCall)) in CheckBuiltinFunctionCall()
2488 if (SemaBuiltinFunctionStart(*this, TheCall)) in CheckBuiltinFunctionCall()
2494 if (SemaBuiltinAlignment(*this, TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
2500 if (SemaBuiltinOverflow(*this, TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
2513 return SemaBuiltinDumpStruct(*this, TheCall); in CheckBuiltinFunctionCall()
2516 if (checkArgCount(*this, TheCall, 3)) in CheckBuiltinFunctionCall()
2519 const Expr *ProbArg = TheCall->getArg(2); in CheckBuiltinFunctionCall()
2544 if (SemaBuiltinPreserveAI(*this, TheCall)) in CheckBuiltinFunctionCall()
2548 if (SemaBuiltinCallWithStaticChain(*this, TheCall)) in CheckBuiltinFunctionCall()
2553 if (SemaBuiltinSEHScopeCheck(*this, TheCall, Scope::SEHExceptScope, in CheckBuiltinFunctionCall()
2559 if (SemaBuiltinSEHScopeCheck(*this, TheCall, Scope::SEHFilterScope, in CheckBuiltinFunctionCall()
2564 if (checkArgCount(*this, TheCall, 1)) in CheckBuiltinFunctionCall()
2568 TheCall->getBeginLoc(), in CheckBuiltinFunctionCall()
2570 TheCall)) in CheckBuiltinFunctionCall()
2573 TheCall->setType(Context.VoidPtrTy); in CheckBuiltinFunctionCall()
2585 if (checkArgCount(*this, TheCall, 1)) in CheckBuiltinFunctionCall()
2596 Diag(TheCall->getBeginLoc(), diag::err_builtin_move_forward_unsupported) in CheckBuiltinFunctionCall()
2607 if (SemaBuiltinRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
2614 if (SemaBuiltinReserveRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
2619 if (checkOpenCLSubgroupExt(*this, TheCall) || in CheckBuiltinFunctionCall()
2620 SemaBuiltinReserveRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
2627 if (SemaBuiltinCommitRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
2632 if (checkOpenCLSubgroupExt(*this, TheCall) || in CheckBuiltinFunctionCall()
2633 SemaBuiltinCommitRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
2638 if (SemaBuiltinPipePackets(*this, TheCall)) in CheckBuiltinFunctionCall()
2644 if (SemaOpenCLBuiltinToAddr(*this, BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
2649 if (SemaOpenCLBuiltinEnqueueKernel(*this, TheCall)) in CheckBuiltinFunctionCall()
2654 if (SemaOpenCLBuiltinKernelWorkGroupSize(*this, TheCall)) in CheckBuiltinFunctionCall()
2659 if (SemaOpenCLBuiltinNDRangeAndBlock(*this, TheCall)) in CheckBuiltinFunctionCall()
2666 if (SemaBuiltinOSLogFormat(TheCall)) in CheckBuiltinFunctionCall()
2671 if (SemaBuiltinConstantArgRange(TheCall, 0, 0, 0xFFFF)) in CheckBuiltinFunctionCall()
2677 if (!TheCall->getArg(0)->isValueDependent() && in CheckBuiltinFunctionCall()
2678 TheCall->getArg(0)->EvaluateAsInt(Result, getASTContext()) && in CheckBuiltinFunctionCall()
2680 Diag(TheCall->getBeginLoc(), diag::warn_frame_address) in CheckBuiltinFunctionCall()
2684 << TheCall->getSourceRange(); in CheckBuiltinFunctionCall()
2689 if (SemaBuiltinNonDeterministicValue(TheCall)) in CheckBuiltinFunctionCall()
2697 if (PrepareBuiltinElementwiseMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2700 QualType ArgTy = TheCall->getArg(0)->getType(); in CheckBuiltinFunctionCall()
2706 Diag(TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2732 if (PrepareBuiltinElementwiseMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2735 QualType ArgTy = TheCall->getArg(0)->getType(); in CheckBuiltinFunctionCall()
2736 if (checkFPMathBuiltinElementType(*this, TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2742 if (SemaBuiltinElementwiseTernaryMath(TheCall)) in CheckBuiltinFunctionCall()
2750 if (SemaBuiltinElementwiseMath(TheCall)) in CheckBuiltinFunctionCall()
2753 QualType ArgTy = TheCall->getArg(0)->getType(); in CheckBuiltinFunctionCall()
2754 if (checkFPMathBuiltinElementType(*this, TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2756 checkFPMathBuiltinElementType(*this, TheCall->getArg(1)->getBeginLoc(), in CheckBuiltinFunctionCall()
2766 if (SemaBuiltinElementwiseMath(TheCall)) in CheckBuiltinFunctionCall()
2769 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2786 if (SemaBuiltinElementwiseMath(TheCall)) in CheckBuiltinFunctionCall()
2791 if (PrepareBuiltinElementwiseMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2794 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2810 if (checkArgCount(*this, TheCall, 2)) in CheckBuiltinFunctionCall()
2813 ExprResult Magnitude = UsualUnaryConversions(TheCall->getArg(0)); in CheckBuiltinFunctionCall()
2814 ExprResult Sign = UsualUnaryConversions(TheCall->getArg(1)); in CheckBuiltinFunctionCall()
2820 if (checkFPMathBuiltinElementType(*this, TheCall->getArg(0)->getBeginLoc(), in CheckBuiltinFunctionCall()
2822 checkFPMathBuiltinElementType(*this, TheCall->getArg(1)->getBeginLoc(), in CheckBuiltinFunctionCall()
2833 TheCall->setArg(0, Magnitude.get()); in CheckBuiltinFunctionCall()
2834 TheCall->setArg(1, Sign.get()); in CheckBuiltinFunctionCall()
2835 TheCall->setType(Magnitude.get()->getType()); in CheckBuiltinFunctionCall()
2840 if (PrepareBuiltinReduceMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2843 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2851 TheCall->setType(TyA->getElementType()); in CheckBuiltinFunctionCall()
2862 if (PrepareBuiltinReduceMathOneArgCall(TheCall)) in CheckBuiltinFunctionCall()
2865 const Expr *Arg = TheCall->getArg(0); in CheckBuiltinFunctionCall()
2872 TheCall->setType(TyA->getElementType()); in CheckBuiltinFunctionCall()
2877 return SemaBuiltinMatrixTranspose(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
2880 return SemaBuiltinMatrixColumnMajorLoad(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
2883 return SemaBuiltinMatrixColumnMajorStore(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
2886 auto Check = [](CallExpr *TheCall) { in CheckBuiltinFunctionCall() argument
2887 if (TheCall->getNumArgs() != 1) in CheckBuiltinFunctionCall()
2889 auto *DRE = dyn_cast<DeclRefExpr>(TheCall->getArg(0)->IgnoreImpCasts()); in CheckBuiltinFunctionCall()
2898 if (!Check(TheCall)) { in CheckBuiltinFunctionCall()
2899 Diag(TheCall->getBeginLoc(), in CheckBuiltinFunctionCall()
2915 Context.BuiltinInfo.getAuxBuiltinID(BuiltinID), TheCall)) in CheckBuiltinFunctionCall()
2919 TheCall)) in CheckBuiltinFunctionCall()
3024 CallExpr *TheCall, SmallVector<std::tuple<int, int, int>, 3> &ImmChecks) { in ParseSVEImmChecks() argument
3038 Expr *Arg = TheCall->getArg(ArgNum); in ParseSVEImmChecks()
3044 if (SemaBuiltinConstantArg(TheCall, ArgNum, Imm)) in ParseSVEImmChecks()
3048 return Diag(TheCall->getBeginLoc(), ErrDiag) << Arg->getSourceRange(); in ParseSVEImmChecks()
3054 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 31)) in ParseSVEImmChecks()
3058 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 13)) in ParseSVEImmChecks()
3062 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, 16)) in ParseSVEImmChecks()
3066 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 7)) in ParseSVEImmChecks()
3070 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, 1)) in ParseSVEImmChecks()
3074 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, 3)) in ParseSVEImmChecks()
3078 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, 7)) in ParseSVEImmChecks()
3082 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in ParseSVEImmChecks()
3087 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, ElementSizeInBits)) in ParseSVEImmChecks()
3091 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, in ParseSVEImmChecks()
3096 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in ParseSVEImmChecks()
3101 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in ParseSVEImmChecks()
3106 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in ParseSVEImmChecks()
3111 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in ParseSVEImmChecks()
3129 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 1)) in ParseSVEImmChecks()
3133 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 2)) in ParseSVEImmChecks()
3137 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 3)) in ParseSVEImmChecks()
3141 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 0)) in ParseSVEImmChecks()
3145 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 15)) in ParseSVEImmChecks()
3149 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 255)) in ParseSVEImmChecks()
3153 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 2, 4) || in ParseSVEImmChecks()
3154 SemaBuiltinConstantArgMultiple(TheCall, ArgNum, 2)) in ParseSVEImmChecks()
3175 static void checkArmStreamingBuiltin(Sema &S, CallExpr *TheCall, in checkArmStreamingBuiltin() argument
3190 S.Diag(TheCall->getBeginLoc(), diag::warn_attribute_arm_sm_incompat_builtin) in checkArmStreamingBuiltin()
3191 << TheCall->getSourceRange() << "streaming"; in checkArmStreamingBuiltin()
3196 S.Diag(TheCall->getBeginLoc(), diag::warn_attribute_arm_sm_incompat_builtin) in checkArmStreamingBuiltin()
3197 << TheCall->getSourceRange() << "streaming compatible"; in checkArmStreamingBuiltin()
3202 S.Diag(TheCall->getBeginLoc(), diag::warn_attribute_arm_sm_incompat_builtin) in checkArmStreamingBuiltin()
3203 << TheCall->getSourceRange() << "non-streaming"; in checkArmStreamingBuiltin()
3231 bool Sema::CheckSMEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { in CheckSMEBuiltinFunctionCall() argument
3242 checkArmStreamingBuiltin(*this, TheCall, FD, *BuiltinType); in CheckSMEBuiltinFunctionCall()
3245 Diag(TheCall->getBeginLoc(), in CheckSMEBuiltinFunctionCall()
3247 << TheCall->getSourceRange(); in CheckSMEBuiltinFunctionCall()
3250 Diag(TheCall->getBeginLoc(), in CheckSMEBuiltinFunctionCall()
3252 << TheCall->getSourceRange(); in CheckSMEBuiltinFunctionCall()
3266 return ParseSVEImmChecks(TheCall, ImmChecks); in CheckSMEBuiltinFunctionCall()
3269 bool Sema::CheckSVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { in CheckSVEBuiltinFunctionCall() argument
3279 checkArmStreamingBuiltin(*this, TheCall, FD, *BuiltinType); in CheckSVEBuiltinFunctionCall()
3292 return ParseSVEImmChecks(TheCall, ImmChecks); in CheckSVEBuiltinFunctionCall()
3296 unsigned BuiltinID, CallExpr *TheCall) { in CheckNeonBuiltinFunctionCall() argument
3306 checkArmStreamingBuiltin(*this, TheCall, FD, ArmNonStreaming); in CheckNeonBuiltinFunctionCall()
3328 unsigned ImmArg = TheCall->getNumArgs()-1; in CheckNeonBuiltinFunctionCall()
3330 if (SemaBuiltinConstantArg(TheCall, ImmArg, Result)) in CheckNeonBuiltinFunctionCall()
3335 return Diag(TheCall->getBeginLoc(), diag::err_invalid_neon_type_code) in CheckNeonBuiltinFunctionCall()
3336 << TheCall->getArg(ImmArg)->getSourceRange(); in CheckNeonBuiltinFunctionCall()
3341 Expr *Arg = TheCall->getArg(PtrArgNum); in CheckNeonBuiltinFunctionCall()
3378 return SemaBuiltinConstantArgRange(TheCall, i, l, u + l); in CheckNeonBuiltinFunctionCall()
3381 bool Sema::CheckMVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { in CheckMVEBuiltinFunctionCall() argument
3390 CallExpr *TheCall) { in CheckCDEBuiltinFunctionCall() argument
3401 return CheckARMCoprocessorImmediate(TI, TheCall->getArg(0), /*WantCDE*/ true); in CheckCDEBuiltinFunctionCall()
3427 bool Sema::CheckARMBuiltinExclusiveCall(unsigned BuiltinID, CallExpr *TheCall, in CheckARMBuiltinExclusiveCall() argument
3443 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in CheckARMBuiltinExclusiveCall()
3446 if (checkArgCount(*this, TheCall, IsLdrex ? 1 : 2)) in CheckARMBuiltinExclusiveCall()
3453 Expr *PointerArg = TheCall->getArg(IsLdrex ? 0 : 1); in CheckARMBuiltinExclusiveCall()
3490 TheCall->setArg(IsLdrex ? 0 : 1, PointerArg); in CheckARMBuiltinExclusiveCall()
3523 TheCall->setType(ValType); in CheckARMBuiltinExclusiveCall()
3528 ExprResult ValArg = TheCall->getArg(0); in CheckARMBuiltinExclusiveCall()
3534 TheCall->setArg(0, ValArg.get()); in CheckARMBuiltinExclusiveCall()
3538 TheCall->setType(Context.IntTy); in CheckARMBuiltinExclusiveCall()
3543 CallExpr *TheCall) { in CheckARMBuiltinFunctionCall() argument
3548 return CheckARMBuiltinExclusiveCall(BuiltinID, TheCall, 64); in CheckARMBuiltinFunctionCall()
3552 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1) || in CheckARMBuiltinFunctionCall()
3553 SemaBuiltinConstantArgRange(TheCall, 2, 0, 1); in CheckARMBuiltinFunctionCall()
3558 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 3, false); in CheckARMBuiltinFunctionCall()
3564 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true); in CheckARMBuiltinFunctionCall()
3566 if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall)) in CheckARMBuiltinFunctionCall()
3568 if (CheckMVEBuiltinFunctionCall(BuiltinID, TheCall)) in CheckARMBuiltinFunctionCall()
3570 if (CheckCDEBuiltinFunctionCall(TI, BuiltinID, TheCall)) in CheckARMBuiltinFunctionCall()
3579 return SemaBuiltinConstantArgRange(TheCall, 1, 1, 32); in CheckARMBuiltinFunctionCall()
3581 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckARMBuiltinFunctionCall()
3583 return SemaBuiltinConstantArgRange(TheCall, 1, 1, 16); in CheckARMBuiltinFunctionCall()
3585 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in CheckARMBuiltinFunctionCall()
3588 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1); in CheckARMBuiltinFunctionCall()
3593 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 15); in CheckARMBuiltinFunctionCall()
3612 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 15) || in CheckARMBuiltinFunctionCall()
3613 CheckARMCoprocessorImmediate(TI, TheCall->getArg(0), in CheckARMBuiltinFunctionCall()
3620 CallExpr *TheCall) { in CheckAArch64BuiltinFunctionCall() argument
3625 return CheckARMBuiltinExclusiveCall(BuiltinID, TheCall, 128); in CheckAArch64BuiltinFunctionCall()
3629 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1) || in CheckAArch64BuiltinFunctionCall()
3630 SemaBuiltinConstantArgRange(TheCall, 2, 0, 3) || in CheckAArch64BuiltinFunctionCall()
3631 SemaBuiltinConstantArgRange(TheCall, 3, 0, 1) || in CheckAArch64BuiltinFunctionCall()
3632 SemaBuiltinConstantArgRange(TheCall, 4, 0, 1); in CheckAArch64BuiltinFunctionCall()
3639 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true); in CheckAArch64BuiltinFunctionCall()
3648 return SemaBuiltinARMMemoryTaggingCall(BuiltinID, TheCall); in CheckAArch64BuiltinFunctionCall()
3655 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true); in CheckAArch64BuiltinFunctionCall()
3662 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 0x7fff); in CheckAArch64BuiltinFunctionCall()
3665 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31); in CheckAArch64BuiltinFunctionCall()
3668 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 0xffff); in CheckAArch64BuiltinFunctionCall()
3670 if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall)) in CheckAArch64BuiltinFunctionCall()
3673 if (CheckSVEBuiltinFunctionCall(BuiltinID, TheCall)) in CheckAArch64BuiltinFunctionCall()
3676 if (CheckSMEBuiltinFunctionCall(BuiltinID, TheCall)) in CheckAArch64BuiltinFunctionCall()
3690 return SemaBuiltinConstantArgRange(TheCall, i, l, u + l); in CheckAArch64BuiltinFunctionCall()
3778 CallExpr *TheCall) { in CheckBPFBuiltinFunctionCall() argument
3785 if (checkArgCount(*this, TheCall, 2)) in CheckBPFBuiltinFunctionCall()
3789 Expr *Arg = TheCall->getArg(1); in CheckBPFBuiltinFunctionCall()
3806 Arg = TheCall->getArg(0); in CheckBPFBuiltinFunctionCall()
3835 TheCall->setType(Context.UnsignedIntTy); in CheckBPFBuiltinFunctionCall()
3837 TheCall->setType(Context.UnsignedLongTy); in CheckBPFBuiltinFunctionCall()
3841 bool Sema::CheckHexagonBuiltinArgument(unsigned BuiltinID, CallExpr *TheCall) { in CheckHexagonBuiltinArgument() argument
4089 Error |= SemaBuiltinConstantArgRange(TheCall, A.OpNum, Min, Max); in CheckHexagonBuiltinArgument()
4094 Error |= SemaBuiltinConstantArgRange(TheCall, A.OpNum, Min, Max); in CheckHexagonBuiltinArgument()
4095 Error |= SemaBuiltinConstantArgMultiple(TheCall, A.OpNum, M); in CheckHexagonBuiltinArgument()
4102 CallExpr *TheCall) { in CheckHexagonBuiltinFunctionCall() argument
4103 return CheckHexagonBuiltinArgument(BuiltinID, TheCall); in CheckHexagonBuiltinFunctionCall()
4108 CallExpr *TheCall) { in CheckLoongArchBuiltinFunctionCall() argument
4115 SemaBuiltinConstantArgRange(TheCall, 0, 0, llvm::maxUIntN(5)); in CheckLoongArchBuiltinFunctionCall()
4116 SemaBuiltinConstantArgRange(TheCall, 2, llvm::minIntN(12), in CheckLoongArchBuiltinFunctionCall()
4125 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 32767); in CheckLoongArchBuiltinFunctionCall()
4128 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 16383); in CheckLoongArchBuiltinFunctionCall()
4131 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 16383); in CheckLoongArchBuiltinFunctionCall()
4134 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 16383); in CheckLoongArchBuiltinFunctionCall()
4137 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckLoongArchBuiltinFunctionCall()
4140 return SemaBuiltinConstantArgRange(TheCall, 0, 0, llvm::maxUIntN(2)); in CheckLoongArchBuiltinFunctionCall()
4156 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4170 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4183 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4223 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckLoongArchBuiltinFunctionCall()
4238 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 31); in CheckLoongArchBuiltinFunctionCall()
4250 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 63); in CheckLoongArchBuiltinFunctionCall()
4263 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 63); in CheckLoongArchBuiltinFunctionCall()
4276 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 127); in CheckLoongArchBuiltinFunctionCall()
4297 return SemaBuiltinConstantArgRange(TheCall, 1, -16, 15); in CheckLoongArchBuiltinFunctionCall()
4305 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 255); in CheckLoongArchBuiltinFunctionCall()
4313 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 255); in CheckLoongArchBuiltinFunctionCall()
4317 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4319 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4323 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4325 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4329 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 3); in CheckLoongArchBuiltinFunctionCall()
4331 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 3); in CheckLoongArchBuiltinFunctionCall()
4335 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1); in CheckLoongArchBuiltinFunctionCall()
4337 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 1); in CheckLoongArchBuiltinFunctionCall()
4339 return SemaBuiltinConstantArgRange(TheCall, 2, -128, 127) || in CheckLoongArchBuiltinFunctionCall()
4340 SemaBuiltinConstantArgRange(TheCall, 3, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4342 return SemaBuiltinConstantArgRange(TheCall, 2, -256, 254) || in CheckLoongArchBuiltinFunctionCall()
4343 SemaBuiltinConstantArgRange(TheCall, 3, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4345 return SemaBuiltinConstantArgRange(TheCall, 2, -512, 508) || in CheckLoongArchBuiltinFunctionCall()
4346 SemaBuiltinConstantArgRange(TheCall, 3, 0, 3); in CheckLoongArchBuiltinFunctionCall()
4348 return SemaBuiltinConstantArgRange(TheCall, 2, -1024, 1016) || in CheckLoongArchBuiltinFunctionCall()
4349 SemaBuiltinConstantArgRange(TheCall, 3, 0, 1); in CheckLoongArchBuiltinFunctionCall()
4352 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2047); in CheckLoongArchBuiltinFunctionCall()
4354 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2046); in CheckLoongArchBuiltinFunctionCall()
4356 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2044); in CheckLoongArchBuiltinFunctionCall()
4358 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2040); in CheckLoongArchBuiltinFunctionCall()
4360 return SemaBuiltinConstantArgRange(TheCall, 2, -2048, 2047); in CheckLoongArchBuiltinFunctionCall()
4362 return SemaBuiltinConstantArgRange(TheCall, 0, -4096, 4095); in CheckLoongArchBuiltinFunctionCall()
4367 return SemaBuiltinConstantArgRange(TheCall, 0, -512, 511); in CheckLoongArchBuiltinFunctionCall()
4383 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4397 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4410 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4450 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckLoongArchBuiltinFunctionCall()
4465 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 31); in CheckLoongArchBuiltinFunctionCall()
4477 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 63); in CheckLoongArchBuiltinFunctionCall()
4490 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 63); in CheckLoongArchBuiltinFunctionCall()
4503 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 127); in CheckLoongArchBuiltinFunctionCall()
4524 return SemaBuiltinConstantArgRange(TheCall, 1, -16, 15); in CheckLoongArchBuiltinFunctionCall()
4533 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 255); in CheckLoongArchBuiltinFunctionCall()
4542 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 255); in CheckLoongArchBuiltinFunctionCall()
4544 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4550 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4553 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4559 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 3); in CheckLoongArchBuiltinFunctionCall()
4562 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 3); in CheckLoongArchBuiltinFunctionCall()
4564 return SemaBuiltinConstantArgRange(TheCall, 2, -128, 127) || in CheckLoongArchBuiltinFunctionCall()
4565 SemaBuiltinConstantArgRange(TheCall, 3, 0, 31); in CheckLoongArchBuiltinFunctionCall()
4567 return SemaBuiltinConstantArgRange(TheCall, 2, -256, 254) || in CheckLoongArchBuiltinFunctionCall()
4568 SemaBuiltinConstantArgRange(TheCall, 3, 0, 15); in CheckLoongArchBuiltinFunctionCall()
4570 return SemaBuiltinConstantArgRange(TheCall, 2, -512, 508) || in CheckLoongArchBuiltinFunctionCall()
4571 SemaBuiltinConstantArgRange(TheCall, 3, 0, 7); in CheckLoongArchBuiltinFunctionCall()
4573 return SemaBuiltinConstantArgRange(TheCall, 2, -1024, 1016) || in CheckLoongArchBuiltinFunctionCall()
4574 SemaBuiltinConstantArgRange(TheCall, 3, 0, 3); in CheckLoongArchBuiltinFunctionCall()
4576 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1); in CheckLoongArchBuiltinFunctionCall()
4579 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2047); in CheckLoongArchBuiltinFunctionCall()
4581 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2046); in CheckLoongArchBuiltinFunctionCall()
4583 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2044); in CheckLoongArchBuiltinFunctionCall()
4585 return SemaBuiltinConstantArgRange(TheCall, 1, -2048, 2040); in CheckLoongArchBuiltinFunctionCall()
4587 return SemaBuiltinConstantArgRange(TheCall, 2, -2048, 2047); in CheckLoongArchBuiltinFunctionCall()
4589 return SemaBuiltinConstantArgRange(TheCall, 0, -4096, 4095); in CheckLoongArchBuiltinFunctionCall()
4594 return SemaBuiltinConstantArgRange(TheCall, 0, -512, 511); in CheckLoongArchBuiltinFunctionCall()
4600 unsigned BuiltinID, CallExpr *TheCall) { in CheckMipsBuiltinFunctionCall() argument
4601 return CheckMipsBuiltinCpu(TI, BuiltinID, TheCall) || in CheckMipsBuiltinFunctionCall()
4602 CheckMipsBuiltinArgument(BuiltinID, TheCall); in CheckMipsBuiltinFunctionCall()
4606 CallExpr *TheCall) { in CheckMipsBuiltinCpu() argument
4611 return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_dsp); in CheckMipsBuiltinCpu()
4617 return Diag(TheCall->getBeginLoc(), in CheckMipsBuiltinCpu()
4624 return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_msa); in CheckMipsBuiltinCpu()
4639 bool Sema::CheckMipsBuiltinArgument(unsigned BuiltinID, CallExpr *TheCall) { in CheckMipsBuiltinArgument() argument
4810 return SemaBuiltinConstantArgRange(TheCall, i, l, u); in CheckMipsBuiltinArgument()
4812 return SemaBuiltinConstantArgRange(TheCall, i, l, u) || in CheckMipsBuiltinArgument()
4813 SemaBuiltinConstantArgMultiple(TheCall, i, m); in CheckMipsBuiltinArgument()
4912 bool Sema::SemaValueIsRunOfOnes(CallExpr *TheCall, unsigned ArgNum) { in SemaValueIsRunOfOnes() argument
4915 Expr *Arg = TheCall->getArg(ArgNum); in SemaValueIsRunOfOnes()
4920 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaValueIsRunOfOnes()
4927 return Diag(TheCall->getBeginLoc(), in SemaValueIsRunOfOnes()
4933 CallExpr *TheCall) { in CheckPPCBuiltinFunctionCall() argument
4939 return Diag(TheCall->getBeginLoc(), diag::err_64_bit_builtin_32_bit_tgt) in CheckPPCBuiltinFunctionCall()
4940 << TheCall->getSourceRange(); in CheckPPCBuiltinFunctionCall()
4946 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1) || in CheckPPCBuiltinFunctionCall()
4947 SemaBuiltinConstantArgRange(TheCall, 2, 0, 15); in CheckPPCBuiltinFunctionCall()
4949 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3); in CheckPPCBuiltinFunctionCall()
4952 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 1); in CheckPPCBuiltinFunctionCall()
4954 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 7); in CheckPPCBuiltinFunctionCall()
4957 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31); in CheckPPCBuiltinFunctionCall()
4960 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31) || in CheckPPCBuiltinFunctionCall()
4961 SemaBuiltinConstantArgRange(TheCall, 2, 0, 31); in CheckPPCBuiltinFunctionCall()
4966 if (SemaBuiltinConstantArgRange(TheCall, 1, 0, 1)) in CheckPPCBuiltinFunctionCall()
4971 return Diag(TheCall->getBeginLoc(), diag::err_ppc_builtin_requires_abi) in CheckPPCBuiltinFunctionCall()
4978 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 3); in CheckPPCBuiltinFunctionCall()
4981 return SemaBuiltinVSX(TheCall); in CheckPPCBuiltinFunctionCall()
4983 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1); in CheckPPCBuiltinFunctionCall()
4985 return SemaBuiltinConstantArgRange(TheCall, 1, 2, 7); in CheckPPCBuiltinFunctionCall()
4987 return SemaBuiltinConstantArgRange(TheCall, 3, 0, 255); in CheckPPCBuiltinFunctionCall()
4989 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 7); in CheckPPCBuiltinFunctionCall()
4991 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 7); in CheckPPCBuiltinFunctionCall()
4993 return SemaBuiltinConstantArgRange(TheCall, 3, 0, 7); in CheckPPCBuiltinFunctionCall()
4996 return SemaBuiltinConstantArgRange(TheCall, 2, 1, 31); in CheckPPCBuiltinFunctionCall()
4998 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 1); in CheckPPCBuiltinFunctionCall()
5002 return SemaValueIsRunOfOnes(TheCall, 2); in CheckPPCBuiltinFunctionCall()
5005 return SemaBuiltinConstantArg(TheCall, 2, Result) || in CheckPPCBuiltinFunctionCall()
5006 SemaValueIsRunOfOnes(TheCall, 3); in CheckPPCBuiltinFunctionCall()
5008 if (SemaBuiltinConstantArgRange(TheCall, 2, 0, 3)) in CheckPPCBuiltinFunctionCall()
5012 TheCall->getArg(2)->getIntegerConstantExpr(Context)->getSExtValue(); in CheckPPCBuiltinFunctionCall()
5014 Diag(TheCall->getBeginLoc(), diag::warn_argument_undefined_behaviour) in CheckPPCBuiltinFunctionCall()
5020 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31); in CheckPPCBuiltinFunctionCall()
5022 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 255); in CheckPPCBuiltinFunctionCall()
5024 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 7) || in CheckPPCBuiltinFunctionCall()
5025 SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in CheckPPCBuiltinFunctionCall()
5027 return SemaBuiltinConstantArgPower2(TheCall, 0); in CheckPPCBuiltinFunctionCall()
5029 return SemaValueIsRunOfOnes(TheCall, 2); in CheckPPCBuiltinFunctionCall()
5032 return SemaBuiltinConstantArgRange(TheCall, 1, 1, 16); in CheckPPCBuiltinFunctionCall()
5037 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1); in CheckPPCBuiltinFunctionCall()
5042 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 3); in CheckPPCBuiltinFunctionCall()
5046 QualType ArgType = TheCall->getArg(0)->getType(); in CheckPPCBuiltinFunctionCall()
5050 return Diag(TheCall->getBeginLoc(), in CheckPPCBuiltinFunctionCall()
5052 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 127); in CheckPPCBuiltinFunctionCall()
5063 return Diag(TheCall->getBeginLoc(), diag::err_target_unsupported_type) in CheckPPCBuiltinFunctionCall()
5074 for (unsigned I = 0, E = TheCall->getNumArgs(); I < E; ++I) in CheckPPCBuiltinFunctionCall()
5075 if (TheCall->getArg(I)->getType() != ArgType) in CheckPPCBuiltinFunctionCall()
5076 return Diag(TheCall->getBeginLoc(), in CheckPPCBuiltinFunctionCall()
5078 << TheCall->getArg(I)->getType() << ArgType << 1 << 0 << 0; in CheckPPCBuiltinFunctionCall()
5083 return SemaBuiltinPPCMMACall(TheCall, BuiltinID, Types); in CheckPPCBuiltinFunctionCall()
5086 return SemaBuiltinConstantArgRange(TheCall, i, l, u); in CheckPPCBuiltinFunctionCall()
5107 CallExpr *TheCall) { in CheckAMDGCNBuiltinFunctionCall() argument
5126 ExprResult Arg = TheCall->getArg(OrderIndex); in CheckAMDGCNBuiltinFunctionCall()
5156 Arg = TheCall->getArg(ScopeIndex); in CheckAMDGCNBuiltinFunctionCall()
5167 bool Sema::CheckRISCVLMUL(CallExpr *TheCall, unsigned ArgNum) { in CheckRISCVLMUL() argument
5171 Expr *Arg = TheCall->getArg(ArgNum); in CheckRISCVLMUL()
5176 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckRISCVLMUL()
5183 return Diag(TheCall->getBeginLoc(), diag::err_riscv_builtin_invalid_lmul) in CheckRISCVLMUL()
5187 static bool CheckInvalidVLENandLMUL(const TargetInfo &TI, CallExpr *TheCall, in CheckInvalidVLENandLMUL() argument
5210 return S.Diag(TheCall->getBeginLoc(), in CheckInvalidVLENandLMUL()
5218 CallExpr *TheCall) { in CheckRISCVBuiltinFunctionCall() argument
5261 Diag(TheCall->getBeginLoc(), diag::err_riscv_builtin_requires_extension) in CheckRISCVBuiltinFunctionCall()
5263 << TheCall->getSourceRange() << StringRef(FeatureStrs); in CheckRISCVBuiltinFunctionCall()
5324 TheCall->getType()->castAs<BuiltinType>()); in CheckRISCVBuiltinFunctionCall()
5327 return Diag(TheCall->getBeginLoc(), in CheckRISCVBuiltinFunctionCall()
5329 << /* IsExtension */ true << TheCall->getSourceRange() << "v"; in CheckRISCVBuiltinFunctionCall()
5337 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5338 CheckRISCVLMUL(TheCall, 2); in CheckRISCVBuiltinFunctionCall()
5340 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5341 CheckRISCVLMUL(TheCall, 1); in CheckRISCVBuiltinFunctionCall()
5345 TheCall->getType().getCanonicalType().getTypePtr())); in CheckRISCVBuiltinFunctionCall()
5348 TheCall->getArg(0)->getType().getCanonicalType().getTypePtr())); in CheckRISCVBuiltinFunctionCall()
5355 return SemaBuiltinConstantArgRange(TheCall, 1, 0, MaxIndex - 1); in CheckRISCVBuiltinFunctionCall()
5360 TheCall->getType().getCanonicalType().getTypePtr())); in CheckRISCVBuiltinFunctionCall()
5363 TheCall->getArg(2)->getType().getCanonicalType().getTypePtr())); in CheckRISCVBuiltinFunctionCall()
5370 return SemaBuiltinConstantArgRange(TheCall, 1, 0, MaxIndex - 1); in CheckRISCVBuiltinFunctionCall()
5377 QualType Op1Type = TheCall->getArg(0)->getType(); in CheckRISCVBuiltinFunctionCall()
5378 QualType Op2Type = TheCall->getArg(1)->getType(); in CheckRISCVBuiltinFunctionCall()
5379 return CheckInvalidVLENandLMUL(TI, TheCall, *this, Op1Type, 128) || in CheckRISCVBuiltinFunctionCall()
5380 CheckInvalidVLENandLMUL(TI, TheCall, *this, Op2Type, 128) || in CheckRISCVBuiltinFunctionCall()
5381 SemaBuiltinConstantArgRange(TheCall, 2, 0, 31); in CheckRISCVBuiltinFunctionCall()
5385 QualType Op1Type = TheCall->getArg(0)->getType(); in CheckRISCVBuiltinFunctionCall()
5386 return CheckInvalidVLENandLMUL(TI, TheCall, *this, Op1Type, 256) || in CheckRISCVBuiltinFunctionCall()
5387 SemaBuiltinConstantArgRange(TheCall, 2, 0, 31); in CheckRISCVBuiltinFunctionCall()
5391 QualType Op1Type = TheCall->getArg(0)->getType(); in CheckRISCVBuiltinFunctionCall()
5392 return CheckInvalidVLENandLMUL(TI, TheCall, *this, Op1Type, 128) || in CheckRISCVBuiltinFunctionCall()
5393 SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckRISCVBuiltinFunctionCall()
5417 QualType Op1Type = TheCall->getArg(0)->getType(); in CheckRISCVBuiltinFunctionCall()
5418 QualType Op2Type = TheCall->getArg(1)->getType(); in CheckRISCVBuiltinFunctionCall()
5419 return CheckInvalidVLENandLMUL(TI, TheCall, *this, Op1Type, 128) || in CheckRISCVBuiltinFunctionCall()
5420 CheckInvalidVLENandLMUL(TI, TheCall, *this, Op2Type, 128); in CheckRISCVBuiltinFunctionCall()
5428 QualType Op1Type = TheCall->getArg(0)->getType(); in CheckRISCVBuiltinFunctionCall()
5429 QualType Op2Type = TheCall->getArg(1)->getType(); in CheckRISCVBuiltinFunctionCall()
5430 QualType Op3Type = TheCall->getArg(2)->getType(); in CheckRISCVBuiltinFunctionCall()
5435 return Diag(TheCall->getBeginLoc(), in CheckRISCVBuiltinFunctionCall()
5437 << /* IsExtension */ true << TheCall->getSourceRange() << "zvknb"; in CheckRISCVBuiltinFunctionCall()
5439 return CheckInvalidVLENandLMUL(TI, TheCall, *this, Op1Type, ElemSize * 4) || in CheckRISCVBuiltinFunctionCall()
5440 CheckInvalidVLENandLMUL(TI, TheCall, *this, Op2Type, ElemSize * 4) || in CheckRISCVBuiltinFunctionCall()
5441 CheckInvalidVLENandLMUL(TI, TheCall, *this, Op3Type, ElemSize * 4); in CheckRISCVBuiltinFunctionCall()
5467 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5468 SemaBuiltinConstantArgRange(TheCall, 1, 0, 31) || in CheckRISCVBuiltinFunctionCall()
5469 SemaBuiltinConstantArgRange(TheCall, 2, 0, 31) || in CheckRISCVBuiltinFunctionCall()
5470 SemaBuiltinConstantArgRange(TheCall, 3, -16, 15); in CheckRISCVBuiltinFunctionCall()
5473 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5474 SemaBuiltinConstantArgRange(TheCall, 1, 0, 31) || in CheckRISCVBuiltinFunctionCall()
5475 SemaBuiltinConstantArgRange(TheCall, 3, -16, 15); in CheckRISCVBuiltinFunctionCall()
5479 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5480 SemaBuiltinConstantArgRange(TheCall, 1, 0, 31) || in CheckRISCVBuiltinFunctionCall()
5481 SemaBuiltinConstantArgRange(TheCall, 2, -16, 15); in CheckRISCVBuiltinFunctionCall()
5485 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5486 SemaBuiltinConstantArgRange(TheCall, 2, -16, 15); in CheckRISCVBuiltinFunctionCall()
5494 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5495 SemaBuiltinConstantArgRange(TheCall, 3, -16, 15); in CheckRISCVBuiltinFunctionCall()
5519 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5520 SemaBuiltinConstantArgRange(TheCall, 1, 0, 31) || in CheckRISCVBuiltinFunctionCall()
5521 SemaBuiltinConstantArgRange(TheCall, 2, 0, 31); in CheckRISCVBuiltinFunctionCall()
5528 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
5529 SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckRISCVBuiltinFunctionCall()
5549 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3); in CheckRISCVBuiltinFunctionCall()
5552 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 1) || in CheckRISCVBuiltinFunctionCall()
5553 SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckRISCVBuiltinFunctionCall()
5564 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 1); in CheckRISCVBuiltinFunctionCall()
5572 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 3); in CheckRISCVBuiltinFunctionCall()
5575 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 10); in CheckRISCVBuiltinFunctionCall()
5595 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 3); in CheckRISCVBuiltinFunctionCall()
5632 return SemaBuiltinConstantArgRange(TheCall, 3, 0, 3); in CheckRISCVBuiltinFunctionCall()
5687 return SemaBuiltinConstantArgRange(TheCall, 4, 0, 3); in CheckRISCVBuiltinFunctionCall()
5701 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 4); in CheckRISCVBuiltinFunctionCall()
5752 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 4); in CheckRISCVBuiltinFunctionCall()
5888 return SemaBuiltinConstantArgRange(TheCall, 3, 0, 4); in CheckRISCVBuiltinFunctionCall()
6049 return SemaBuiltinConstantArgRange(TheCall, 4, 0, 4); in CheckRISCVBuiltinFunctionCall()
6053 cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in CheckRISCVBuiltinFunctionCall()
6060 if (checkArgCountAtLeast(*this, TheCall, NumArgs - 1)) in CheckRISCVBuiltinFunctionCall()
6063 if (checkArgCountAtMost(*this, TheCall, NumArgs)) in CheckRISCVBuiltinFunctionCall()
6068 if (TheCall->getNumArgs() == NumArgs && in CheckRISCVBuiltinFunctionCall()
6069 SemaBuiltinConstantArgRange(TheCall, NumArgs - 1, 2, 5)) in CheckRISCVBuiltinFunctionCall()
6072 Expr *PointerArg = TheCall->getArg(0); in CheckRISCVBuiltinFunctionCall()
6099 TheCall->setType(ValType); in CheckRISCVBuiltinFunctionCall()
6103 ExprResult ValArg = TheCall->getArg(1); in CheckRISCVBuiltinFunctionCall()
6110 TheCall->setArg(1, ValArg.get()); in CheckRISCVBuiltinFunctionCall()
6111 TheCall->setType(Context.VoidTy); in CheckRISCVBuiltinFunctionCall()
6119 CallExpr *TheCall) { in CheckSystemZBuiltinFunctionCall() argument
6121 Expr *Arg = TheCall->getArg(0); in CheckSystemZBuiltinFunctionCall()
6153 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15) || in CheckSystemZBuiltinFunctionCall()
6154 SemaBuiltinConstantArgRange(TheCall, 2, 0, 15); in CheckSystemZBuiltinFunctionCall()
6185 return SemaBuiltinConstantArgRange(TheCall, i, l, u); in CheckSystemZBuiltinFunctionCall()
6190 CallExpr *TheCall) { in CheckWebAssemblyBuiltinFunctionCall() argument
6193 return BuiltinWasmRefNullExtern(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6195 return BuiltinWasmRefNullFunc(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6197 return BuiltinWasmTableGet(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6199 return BuiltinWasmTableSet(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6201 return BuiltinWasmTableSize(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6203 return BuiltinWasmTableGrow(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6205 return BuiltinWasmTableFill(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6207 return BuiltinWasmTableCopy(TheCall); in CheckWebAssemblyBuiltinFunctionCall()
6247 CallExpr *TheCall) { in CheckNVPTXBuiltinFunctionCall() argument
6253 return checkArgCountAtMost(*this, TheCall, 3); in CheckNVPTXBuiltinFunctionCall()
6263 CallExpr *TheCall) { in SemaBuiltinCpuSupports() argument
6264 Expr *Arg = TheCall->getArg(0); in SemaBuiltinCpuSupports()
6268 return S.Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in SemaBuiltinCpuSupports()
6275 return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_supports) in SemaBuiltinCpuSupports()
6283 static bool SemaBuiltinCpuIs(Sema &S, const TargetInfo &TI, CallExpr *TheCall) { in SemaBuiltinCpuIs() argument
6284 Expr *Arg = TheCall->getArg(0); in SemaBuiltinCpuIs()
6288 return S.Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in SemaBuiltinCpuIs()
6295 return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_is) in SemaBuiltinCpuIs()
6301 bool Sema::CheckX86BuiltinRoundingOrSAE(unsigned BuiltinID, CallExpr *TheCall) { in CheckX86BuiltinRoundingOrSAE() argument
6574 Expr *Arg = TheCall->getArg(ArgNum); in CheckX86BuiltinRoundingOrSAE()
6579 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckX86BuiltinRoundingOrSAE()
6592 return Diag(TheCall->getBeginLoc(), diag::err_x86_builtin_invalid_rounding) in CheckX86BuiltinRoundingOrSAE()
6598 CallExpr *TheCall) { in CheckX86BuiltinGatherScatterScale() argument
6684 Expr *Arg = TheCall->getArg(ArgNum); in CheckX86BuiltinGatherScatterScale()
6689 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckX86BuiltinGatherScatterScale()
6695 return Diag(TheCall->getBeginLoc(), diag::err_x86_builtin_invalid_scale) in CheckX86BuiltinGatherScatterScale()
6701 bool Sema::CheckX86BuiltinTileArgumentsRange(CallExpr *TheCall, in CheckX86BuiltinTileArgumentsRange() argument
6704 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, TileRegLow, TileRegHigh)) in CheckX86BuiltinTileArgumentsRange()
6710 bool Sema::CheckX86BuiltinTileDuplicate(CallExpr *TheCall, in CheckX86BuiltinTileDuplicate() argument
6716 Expr *Arg = TheCall->getArg(ArgNum); in CheckX86BuiltinTileDuplicate()
6721 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckX86BuiltinTileDuplicate()
6727 return Diag(TheCall->getBeginLoc(), in CheckX86BuiltinTileDuplicate()
6729 << TheCall->getArg(ArgNum)->getSourceRange(); in CheckX86BuiltinTileDuplicate()
6735 bool Sema::CheckX86BuiltinTileRangeAndDuplicate(CallExpr *TheCall, in CheckX86BuiltinTileRangeAndDuplicate() argument
6737 return CheckX86BuiltinTileArgumentsRange(TheCall, ArgNums) || in CheckX86BuiltinTileRangeAndDuplicate()
6738 CheckX86BuiltinTileDuplicate(TheCall, ArgNums); in CheckX86BuiltinTileRangeAndDuplicate()
6741 bool Sema::CheckX86BuiltinTileArguments(unsigned BuiltinID, CallExpr *TheCall) { in CheckX86BuiltinTileArguments() argument
6749 return CheckX86BuiltinTileArgumentsRange(TheCall, 0); in CheckX86BuiltinTileArguments()
6758 return CheckX86BuiltinTileRangeAndDuplicate(TheCall, {0, 1, 2}); in CheckX86BuiltinTileArguments()
6773 CallExpr *TheCall) { in CheckX86BuiltinFunctionCall() argument
6775 return SemaBuiltinCpuSupports(*this, TI, TheCall); in CheckX86BuiltinFunctionCall()
6778 return SemaBuiltinCpuIs(*this, TI, TheCall); in CheckX86BuiltinFunctionCall()
6783 return Diag(TheCall->getCallee()->getBeginLoc(), in CheckX86BuiltinFunctionCall()
6787 if (CheckX86BuiltinRoundingOrSAE(BuiltinID, TheCall)) in CheckX86BuiltinFunctionCall()
6791 if (CheckX86BuiltinGatherScatterScale(BuiltinID, TheCall)) in CheckX86BuiltinFunctionCall()
6795 if (CheckX86BuiltinTileArguments(BuiltinID, TheCall)) in CheckX86BuiltinFunctionCall()
7153 return SemaBuiltinConstantArgRange(TheCall, i, l, u, /*RangeIsError*/ false); in CheckX86BuiltinFunctionCall()
7630 bool Sema::CheckFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall, in CheckFunctionCall() argument
7632 bool IsMemberOperatorCall = isa<CXXOperatorCallExpr>(TheCall) && in CheckFunctionCall()
7634 bool IsMemberFunction = isa<CXXMemberCallExpr>(TheCall) || in CheckFunctionCall()
7637 TheCall->getCallee()); in CheckFunctionCall()
7638 Expr** Args = TheCall->getArgs(); in CheckFunctionCall()
7639 unsigned NumArgs = TheCall->getNumArgs(); in CheckFunctionCall()
7652 cast<CXXMemberCallExpr>(TheCall)->getImplicitObjectArgument(); in CheckFunctionCall()
7666 CheckArgAlignment(TheCall->getRParenLoc(), FDecl, "'this'", ThisType, in CheckFunctionCall()
7671 IsMemberFunction, TheCall->getRParenLoc(), in CheckFunctionCall()
7672 TheCall->getCallee()->getSourceRange(), CallType); in CheckFunctionCall()
7682 CheckTCBEnforcement(TheCall->getExprLoc(), FDecl); in CheckFunctionCall()
7684 CheckAbsoluteValueFunction(TheCall, FDecl); in CheckFunctionCall()
7685 CheckMaxUnsignedZero(TheCall, FDecl); in CheckFunctionCall()
7686 CheckInfNaNFunction(TheCall, FDecl); in CheckFunctionCall()
7699 CheckStrlcpycatArguments(TheCall, FnInfo); in CheckFunctionCall()
7702 CheckStrncatArguments(TheCall, FnInfo); in CheckFunctionCall()
7705 CheckFreeArguments(TheCall); in CheckFunctionCall()
7708 CheckMemaccessArguments(TheCall, CMId, FnInfo); in CheckFunctionCall()
7728 bool Sema::CheckPointerCall(NamedDecl *NDecl, CallExpr *TheCall, in CheckPointerCall() argument
7752 llvm::ArrayRef(TheCall->getArgs(), TheCall->getNumArgs()), in CheckPointerCall()
7753 /*IsMemberFunction=*/false, TheCall->getRParenLoc(), in CheckPointerCall()
7754 TheCall->getCallee()->getSourceRange(), CallType); in CheckPointerCall()
7761 bool Sema::CheckOtherCall(CallExpr *TheCall, const FunctionProtoType *Proto) { in CheckOtherCall() argument
7763 TheCall->getCallee()); in CheckOtherCall()
7765 llvm::ArrayRef(TheCall->getArgs(), TheCall->getNumArgs()), in CheckOtherCall()
7766 /*IsMemberFunction=*/false, TheCall->getRParenLoc(), in CheckOtherCall()
7767 TheCall->getCallee()->getSourceRange(), CallType); in CheckOtherCall()
7810 CallExpr *TheCall = cast<CallExpr>(TheCallResult.get()); in SemaAtomicOpsOverloaded() local
7811 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaAtomicOpsOverloaded()
7812 MultiExprArg Args{TheCall->getArgs(), TheCall->getNumArgs()}; in SemaAtomicOpsOverloaded()
7813 return BuildAtomicExpr({TheCall->getBeginLoc(), TheCall->getEndLoc()}, in SemaAtomicOpsOverloaded()
7814 DRE->getSourceRange(), TheCall->getRParenLoc(), Args, in SemaAtomicOpsOverloaded()
8402 bool Sema::BuiltinWasmRefNullExtern(CallExpr *TheCall) { in BuiltinWasmRefNullExtern() argument
8403 if (TheCall->getNumArgs() != 0) in BuiltinWasmRefNullExtern()
8406 TheCall->setType(Context.getWebAssemblyExternrefType()); in BuiltinWasmRefNullExtern()
8411 bool Sema::BuiltinWasmRefNullFunc(CallExpr *TheCall) { in BuiltinWasmRefNullFunc() argument
8412 if (TheCall->getNumArgs() != 0) { in BuiltinWasmRefNullFunc()
8413 Diag(TheCall->getBeginLoc(), diag::err_typecheck_call_too_many_args) in BuiltinWasmRefNullFunc()
8414 << 0 /*function call*/ << /*expected*/ 0 << TheCall->getNumArgs() in BuiltinWasmRefNullFunc()
8426 TheCall->setType(Type); in BuiltinWasmRefNullFunc()
8440 CallExpr *TheCall = static_cast<CallExpr *>(TheCallResult.get()); in SemaBuiltinAtomicOverloaded() local
8441 Expr *Callee = TheCall->getCallee(); in SemaBuiltinAtomicOverloaded()
8446 if (TheCall->getNumArgs() < 1) { in SemaBuiltinAtomicOverloaded()
8447 Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in SemaBuiltinAtomicOverloaded()
8448 << 0 << 1 << TheCall->getNumArgs() << /*is non object*/ 0 in SemaBuiltinAtomicOverloaded()
8458 Expr *FirstArg = TheCall->getArg(0); in SemaBuiltinAtomicOverloaded()
8463 TheCall->setArg(0, FirstArg); in SemaBuiltinAtomicOverloaded()
8723 if (TheCall->getNumArgs() < 1+NumFixed) { in SemaBuiltinAtomicOverloaded()
8724 Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in SemaBuiltinAtomicOverloaded()
8725 << 0 << 1 + NumFixed << TheCall->getNumArgs() << /*is non object*/ 0 in SemaBuiltinAtomicOverloaded()
8730 Diag(TheCall->getEndLoc(), diag::warn_atomic_implicit_seq_cst) in SemaBuiltinAtomicOverloaded()
8734 Diag(TheCall->getEndLoc(), diag::warn_sync_fetch_and_nand_semantics_change) in SemaBuiltinAtomicOverloaded()
8760 ExprResult Arg = TheCall->getArg(i+1); in SemaBuiltinAtomicOverloaded()
8777 TheCall->setArg(i+1, Arg.get()); in SemaBuiltinAtomicOverloaded()
8791 TheCall->setCallee(PromotedCall.get()); in SemaBuiltinAtomicOverloaded()
8796 TheCall->setType(ResultType); in SemaBuiltinAtomicOverloaded()
8817 CallExpr *TheCall = (CallExpr *)TheCallResult.get(); in SemaBuiltinNontemporalOverloaded() local
8819 cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaBuiltinNontemporalOverloaded()
8829 if (checkArgCount(*this, TheCall, numArgs)) in SemaBuiltinNontemporalOverloaded()
8836 Expr *PointerArg = TheCall->getArg(numArgs - 1); in SemaBuiltinNontemporalOverloaded()
8843 TheCall->setArg(numArgs - 1, PointerArg); in SemaBuiltinNontemporalOverloaded()
8866 TheCall->setType(ValType); in SemaBuiltinNontemporalOverloaded()
8870 ExprResult ValArg = TheCall->getArg(0); in SemaBuiltinNontemporalOverloaded()
8877 TheCall->setArg(0, ValArg.get()); in SemaBuiltinNontemporalOverloaded()
8878 TheCall->setType(Context.VoidTy); in SemaBuiltinNontemporalOverloaded()
9017 bool Sema::SemaBuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) { in SemaBuiltinVAStart() argument
9018 Expr *Fn = TheCall->getCallee(); in SemaBuiltinVAStart()
9026 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinVAStart()
9030 if (checkBuiltinArgument(*this, TheCall, 0)) in SemaBuiltinVAStart()
9043 const Expr *Arg = TheCall->getArg(1)->IgnoreParenCasts(); in SemaBuiltinVAStart()
9045 TheCall->getArg(1)->getIntegerConstantExpr(Context); in SemaBuiltinVAStart()
9067 Diag(TheCall->getArg(1)->getBeginLoc(), in SemaBuiltinVAStart()
9156 bool Sema::SemaBuiltinUnorderedCompare(CallExpr *TheCall, unsigned BuiltinID) { in SemaBuiltinUnorderedCompare() argument
9157 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinUnorderedCompare()
9161 TheCall->getFPFeaturesInEffect(getLangOpts()).getNoHonorNaNs()) in SemaBuiltinUnorderedCompare()
9162 Diag(TheCall->getBeginLoc(), diag::warn_fp_nan_inf_when_disabled) in SemaBuiltinUnorderedCompare()
9163 << 1 << 0 << TheCall->getSourceRange(); in SemaBuiltinUnorderedCompare()
9165 ExprResult OrigArg0 = TheCall->getArg(0); in SemaBuiltinUnorderedCompare()
9166 ExprResult OrigArg1 = TheCall->getArg(1); in SemaBuiltinUnorderedCompare()
9171 OrigArg0, OrigArg1, TheCall->getExprLoc(), ACK_Comparison); in SemaBuiltinUnorderedCompare()
9178 TheCall->setArg(0, OrigArg0.get()); in SemaBuiltinUnorderedCompare()
9179 TheCall->setArg(1, OrigArg1.get()); in SemaBuiltinUnorderedCompare()
9199 bool Sema::SemaBuiltinFPClassification(CallExpr *TheCall, unsigned NumArgs, in SemaBuiltinFPClassification() argument
9201 if (checkArgCount(*this, TheCall, NumArgs)) in SemaBuiltinFPClassification()
9204 FPOptions FPO = TheCall->getFPFeaturesInEffect(getLangOpts()); in SemaBuiltinFPClassification()
9208 Diag(TheCall->getBeginLoc(), diag::warn_fp_nan_inf_when_disabled) in SemaBuiltinFPClassification()
9209 << 0 << 0 << TheCall->getSourceRange(); in SemaBuiltinFPClassification()
9213 Diag(TheCall->getBeginLoc(), diag::warn_fp_nan_inf_when_disabled) in SemaBuiltinFPClassification()
9214 << 1 << 0 << TheCall->getSourceRange(); in SemaBuiltinFPClassification()
9224 Expr *Arg = TheCall->getArg(i); in SemaBuiltinFPClassification()
9233 TheCall->setArg(i, Res.get()); in SemaBuiltinFPClassification()
9236 Expr *OrigArg = TheCall->getArg(FPArgNo); in SemaBuiltinFPClassification()
9248 TheCall->setArg(FPArgNo, OrigArg); in SemaBuiltinFPClassification()
9268 if (SemaBuiltinConstantArgRange(TheCall, 1, 0, llvm::fcAllFlags)) in SemaBuiltinFPClassification()
9278 TheCall->setType(ResultTy); in SemaBuiltinFPClassification()
9285 bool Sema::SemaBuiltinComplex(CallExpr *TheCall) { in SemaBuiltinComplex() argument
9286 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinComplex()
9291 Expr *Arg = TheCall->getArg(I); in SemaBuiltinComplex()
9308 TheCall->setArg(I, Converted.get()); in SemaBuiltinComplex()
9312 TheCall->setType(Context.DependentTy); in SemaBuiltinComplex()
9316 Expr *Real = TheCall->getArg(0); in SemaBuiltinComplex()
9317 Expr *Imag = TheCall->getArg(1); in SemaBuiltinComplex()
9329 return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) in SemaBuiltinComplex()
9332 return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) in SemaBuiltinComplex()
9335 TheCall->setType(Context.getComplexType(Real->getType())); in SemaBuiltinComplex()
9346 bool Sema::SemaBuiltinVSX(CallExpr *TheCall) { in SemaBuiltinVSX() argument
9348 if (checkArgCount(*this, TheCall, ExpectedNumArgs)) in SemaBuiltinVSX()
9352 if (!TheCall->getArg(2)->isIntegerConstantExpr(Context)) in SemaBuiltinVSX()
9353 return Diag(TheCall->getBeginLoc(), in SemaBuiltinVSX()
9355 << 3 /* argument index */ << TheCall->getDirectCallee() in SemaBuiltinVSX()
9356 << SourceRange(TheCall->getArg(2)->getBeginLoc(), in SemaBuiltinVSX()
9357 TheCall->getArg(2)->getEndLoc()); in SemaBuiltinVSX()
9359 QualType Arg1Ty = TheCall->getArg(0)->getType(); in SemaBuiltinVSX()
9360 QualType Arg2Ty = TheCall->getArg(1)->getType(); in SemaBuiltinVSX()
9363 SourceLocation BuiltinLoc = TheCall->getBeginLoc(); in SemaBuiltinVSX()
9367 << TheCall->getDirectCallee() in SemaBuiltinVSX()
9368 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinVSX()
9369 TheCall->getArg(1)->getEndLoc()); in SemaBuiltinVSX()
9375 << TheCall->getDirectCallee() in SemaBuiltinVSX()
9376 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinVSX()
9377 TheCall->getArg(1)->getEndLoc()); in SemaBuiltinVSX()
9383 TheCall->setType(Arg1Ty); in SemaBuiltinVSX()
9390 ExprResult Sema::SemaBuiltinShuffleVector(CallExpr *TheCall) { in SemaBuiltinShuffleVector() argument
9391 if (TheCall->getNumArgs() < 2) in SemaBuiltinShuffleVector()
9392 return ExprError(Diag(TheCall->getEndLoc(), in SemaBuiltinShuffleVector()
9394 << 0 /*function call*/ << 2 << TheCall->getNumArgs() in SemaBuiltinShuffleVector()
9395 << /*is non object*/ 0 << TheCall->getSourceRange()); in SemaBuiltinShuffleVector()
9400 QualType resType = TheCall->getArg(0)->getType(); in SemaBuiltinShuffleVector()
9403 if (!TheCall->getArg(0)->isTypeDependent() && in SemaBuiltinShuffleVector()
9404 !TheCall->getArg(1)->isTypeDependent()) { in SemaBuiltinShuffleVector()
9405 QualType LHSType = TheCall->getArg(0)->getType(); in SemaBuiltinShuffleVector()
9406 QualType RHSType = TheCall->getArg(1)->getType(); in SemaBuiltinShuffleVector()
9410 Diag(TheCall->getBeginLoc(), diag::err_vec_builtin_non_vector) in SemaBuiltinShuffleVector()
9411 << TheCall->getDirectCallee() in SemaBuiltinShuffleVector()
9412 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinShuffleVector()
9413 TheCall->getArg(1)->getEndLoc())); in SemaBuiltinShuffleVector()
9416 unsigned numResElements = TheCall->getNumArgs() - 2; in SemaBuiltinShuffleVector()
9421 if (TheCall->getNumArgs() == 2) { in SemaBuiltinShuffleVector()
9424 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
9426 << TheCall->getDirectCallee() in SemaBuiltinShuffleVector()
9427 << SourceRange(TheCall->getArg(1)->getBeginLoc(), in SemaBuiltinShuffleVector()
9428 TheCall->getArg(1)->getEndLoc())); in SemaBuiltinShuffleVector()
9430 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
9432 << TheCall->getDirectCallee() in SemaBuiltinShuffleVector()
9433 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinShuffleVector()
9434 TheCall->getArg(1)->getEndLoc())); in SemaBuiltinShuffleVector()
9442 for (unsigned i = 2; i < TheCall->getNumArgs(); i++) { in SemaBuiltinShuffleVector()
9443 if (TheCall->getArg(i)->isTypeDependent() || in SemaBuiltinShuffleVector()
9444 TheCall->getArg(i)->isValueDependent()) in SemaBuiltinShuffleVector()
9448 if (!(Result = TheCall->getArg(i)->getIntegerConstantExpr(Context))) in SemaBuiltinShuffleVector()
9449 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
9451 << TheCall->getArg(i)->getSourceRange()); in SemaBuiltinShuffleVector()
9459 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
9461 << TheCall->getArg(i)->getSourceRange()); in SemaBuiltinShuffleVector()
9466 for (unsigned i = 0, e = TheCall->getNumArgs(); i != e; i++) { in SemaBuiltinShuffleVector()
9467 exprs.push_back(TheCall->getArg(i)); in SemaBuiltinShuffleVector()
9468 TheCall->setArg(i, nullptr); in SemaBuiltinShuffleVector()
9472 TheCall->getCallee()->getBeginLoc(), in SemaBuiltinShuffleVector()
9473 TheCall->getRParenLoc()); in SemaBuiltinShuffleVector()
9510 bool Sema::SemaBuiltinPrefetch(CallExpr *TheCall) { in SemaBuiltinPrefetch() argument
9511 unsigned NumArgs = TheCall->getNumArgs(); in SemaBuiltinPrefetch()
9514 return Diag(TheCall->getEndLoc(), in SemaBuiltinPrefetch()
9517 << TheCall->getSourceRange(); in SemaBuiltinPrefetch()
9522 if (SemaBuiltinConstantArgRange(TheCall, i, 0, i == 1 ? 1 : 3)) in SemaBuiltinPrefetch()
9529 bool Sema::SemaBuiltinArithmeticFence(CallExpr *TheCall) { in SemaBuiltinArithmeticFence() argument
9531 return Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in SemaBuiltinArithmeticFence()
9532 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in SemaBuiltinArithmeticFence()
9533 if (checkArgCount(*this, TheCall, 1)) in SemaBuiltinArithmeticFence()
9535 Expr *Arg = TheCall->getArg(0); in SemaBuiltinArithmeticFence()
9541 return Diag(TheCall->getEndLoc(), diag::err_typecheck_expect_flt_or_vector) in SemaBuiltinArithmeticFence()
9545 TheCall->setArg(0, FirstArg.get()); in SemaBuiltinArithmeticFence()
9547 TheCall->setType(TheCall->getArg(0)->getType()); in SemaBuiltinArithmeticFence()
9554 bool Sema::SemaBuiltinAssume(CallExpr *TheCall) { in SemaBuiltinAssume() argument
9555 Expr *Arg = TheCall->getArg(0); in SemaBuiltinAssume()
9561 << cast<FunctionDecl>(TheCall->getCalleeDecl())->getIdentifier(); in SemaBuiltinAssume()
9569 bool Sema::SemaBuiltinAllocaWithAlign(CallExpr *TheCall) { in SemaBuiltinAllocaWithAlign() argument
9571 Expr *Arg = TheCall->getArg(1); in SemaBuiltinAllocaWithAlign()
9579 Diag(TheCall->getBeginLoc(), diag::warn_alloca_align_alignof) in SemaBuiltinAllocaWithAlign()
9585 return Diag(TheCall->getBeginLoc(), diag::err_alignment_not_power_of_two) in SemaBuiltinAllocaWithAlign()
9589 return Diag(TheCall->getBeginLoc(), diag::err_alignment_too_small) in SemaBuiltinAllocaWithAlign()
9593 return Diag(TheCall->getBeginLoc(), diag::err_alignment_too_big) in SemaBuiltinAllocaWithAlign()
9602 bool Sema::SemaBuiltinAssumeAligned(CallExpr *TheCall) { in SemaBuiltinAssumeAligned() argument
9603 if (checkArgCountRange(*this, TheCall, 2, 3)) in SemaBuiltinAssumeAligned()
9606 unsigned NumArgs = TheCall->getNumArgs(); in SemaBuiltinAssumeAligned()
9607 Expr *FirstArg = TheCall->getArg(0); in SemaBuiltinAssumeAligned()
9612 if (checkBuiltinArgument(*this, TheCall, 0)) in SemaBuiltinAssumeAligned()
9615 TheCall->setArg(0, FirstArgResult.get()); in SemaBuiltinAssumeAligned()
9619 Expr *SecondArg = TheCall->getArg(1); in SemaBuiltinAssumeAligned()
9624 if (SemaBuiltinConstantArg(TheCall, 1, Result)) in SemaBuiltinAssumeAligned()
9628 return Diag(TheCall->getBeginLoc(), diag::err_alignment_not_power_of_two) in SemaBuiltinAssumeAligned()
9632 Diag(TheCall->getBeginLoc(), diag::warn_assume_aligned_too_great) in SemaBuiltinAssumeAligned()
9637 Expr *ThirdArg = TheCall->getArg(2); in SemaBuiltinAssumeAligned()
9640 TheCall->setArg(2, ThirdArg); in SemaBuiltinAssumeAligned()
9646 bool Sema::SemaBuiltinOSLogFormat(CallExpr *TheCall) { in SemaBuiltinOSLogFormat() argument
9648 cast<FunctionDecl>(TheCall->getCalleeDecl())->getBuiltinID(); in SemaBuiltinOSLogFormat()
9651 unsigned NumArgs = TheCall->getNumArgs(); in SemaBuiltinOSLogFormat()
9654 return Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args) in SemaBuiltinOSLogFormat()
9656 << /*is non object*/ 0 << TheCall->getSourceRange(); in SemaBuiltinOSLogFormat()
9659 return Diag(TheCall->getEndLoc(), in SemaBuiltinOSLogFormat()
9662 << /*is non object*/ 0 << TheCall->getSourceRange(); in SemaBuiltinOSLogFormat()
9668 ExprResult Arg(TheCall->getArg(i)); in SemaBuiltinOSLogFormat()
9674 TheCall->setArg(i, Arg.get()); in SemaBuiltinOSLogFormat()
9681 ExprResult Arg = CheckOSLogFormatStringArg(TheCall->getArg(i)); in SemaBuiltinOSLogFormat()
9684 TheCall->setArg(i, Arg.get()); in SemaBuiltinOSLogFormat()
9692 TheCall->getArg(i), VariadicFunction, nullptr); in SemaBuiltinOSLogFormat()
9699 << TheCall->getSourceRange(); in SemaBuiltinOSLogFormat()
9701 TheCall->setArg(i, Arg.get()); in SemaBuiltinOSLogFormat()
9709 ArrayRef<const Expr *> Args(TheCall->getArgs(), TheCall->getNumArgs()); in SemaBuiltinOSLogFormat()
9712 VariadicFunction, TheCall->getBeginLoc(), SourceRange(), in SemaBuiltinOSLogFormat()
9719 TheCall->setType(Context.getSizeType()); in SemaBuiltinOSLogFormat()
9721 TheCall->setType(Context.VoidPtrTy); in SemaBuiltinOSLogFormat()
9728 bool Sema::SemaBuiltinConstantArg(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArg() argument
9730 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArg()
9731 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaBuiltinConstantArg()
9738 return Diag(TheCall->getBeginLoc(), diag::err_constant_integer_arg_type) in SemaBuiltinConstantArg()
9746 bool Sema::SemaBuiltinConstantArgRange(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArgRange() argument
9753 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgRange()
9758 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgRange()
9763 return Diag(TheCall->getBeginLoc(), diag::err_argument_invalid_range) in SemaBuiltinConstantArgRange()
9768 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in SemaBuiltinConstantArgRange()
9779 bool Sema::SemaBuiltinConstantArgMultiple(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArgMultiple() argument
9784 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgMultiple()
9789 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgMultiple()
9793 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_multiple) in SemaBuiltinConstantArgMultiple()
9801 bool Sema::SemaBuiltinConstantArgPower2(CallExpr *TheCall, int ArgNum) { in SemaBuiltinConstantArgPower2() argument
9805 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgPower2()
9810 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgPower2()
9818 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_power_of_2) in SemaBuiltinConstantArgPower2()
9847 bool Sema::SemaBuiltinConstantArgShiftedByte(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArgShiftedByte() argument
9852 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgShiftedByte()
9857 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgShiftedByte()
9867 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_shifted_byte) in SemaBuiltinConstantArgShiftedByte()
9876 bool Sema::SemaBuiltinConstantArgShiftedByteOrXXFF(CallExpr *TheCall, in SemaBuiltinConstantArgShiftedByteOrXXFF() argument
9882 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgShiftedByteOrXXFF()
9887 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgShiftedByteOrXXFF()
9899 return Diag(TheCall->getBeginLoc(), in SemaBuiltinConstantArgShiftedByteOrXXFF()
9905 bool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) { in SemaBuiltinARMMemoryTaggingCall() argument
9907 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinARMMemoryTaggingCall()
9909 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
9910 Expr *Arg1 = TheCall->getArg(1); in SemaBuiltinARMMemoryTaggingCall()
9917 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
9919 TheCall->setArg(0, FirstArg.get()); in SemaBuiltinARMMemoryTaggingCall()
9926 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) in SemaBuiltinARMMemoryTaggingCall()
9930 TheCall->setType(FirstArgType); in SemaBuiltinARMMemoryTaggingCall()
9935 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinARMMemoryTaggingCall()
9938 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
9944 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
9946 TheCall->setArg(0, FirstArg.get()); in SemaBuiltinARMMemoryTaggingCall()
9949 TheCall->setType(FirstArgType); in SemaBuiltinARMMemoryTaggingCall()
9952 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in SemaBuiltinARMMemoryTaggingCall()
9956 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinARMMemoryTaggingCall()
9958 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
9959 Expr *Arg1 = TheCall->getArg(1); in SemaBuiltinARMMemoryTaggingCall()
9966 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
9971 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) in SemaBuiltinARMMemoryTaggingCall()
9973 TheCall->setType(Context.IntTy); in SemaBuiltinARMMemoryTaggingCall()
9979 if (checkArgCount(*this, TheCall, 1)) in SemaBuiltinARMMemoryTaggingCall()
9981 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
9988 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
9990 TheCall->setArg(0, FirstArg.get()); in SemaBuiltinARMMemoryTaggingCall()
9994 TheCall->setType(FirstArgType); in SemaBuiltinARMMemoryTaggingCall()
9999 Expr *ArgA = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
10000 Expr *ArgB = TheCall->getArg(1); in SemaBuiltinARMMemoryTaggingCall()
10017 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) in SemaBuiltinARMMemoryTaggingCall()
10021 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) in SemaBuiltinARMMemoryTaggingCall()
10032 return Diag(TheCall->getBeginLoc(), diag::err_typecheck_sub_ptr_compatible) in SemaBuiltinARMMemoryTaggingCall()
10040 return Diag(TheCall->getBeginLoc(), diag::err_memtag_any2arg_pointer) in SemaBuiltinARMMemoryTaggingCall()
10049 TheCall->setArg(0, ArgExprA.get()); in SemaBuiltinARMMemoryTaggingCall()
10050 TheCall->setArg(1, ArgExprB.get()); in SemaBuiltinARMMemoryTaggingCall()
10051 TheCall->setType(Context.LongLongTy); in SemaBuiltinARMMemoryTaggingCall()
10060 bool Sema::SemaBuiltinARMSpecialReg(unsigned BuiltinID, CallExpr *TheCall, in SemaBuiltinARMSpecialReg() argument
10080 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinARMSpecialReg()
10086 return Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in SemaBuiltinARMSpecialReg()
10095 return Diag(TheCall->getBeginLoc(), diag::err_arm_invalid_specialreg) in SemaBuiltinARMSpecialReg()
10137 return Diag(TheCall->getBeginLoc(), diag::err_arm_invalid_specialreg) in SemaBuiltinARMSpecialReg()
10143 if (TheCall->getNumArgs() != 2) in SemaBuiltinARMSpecialReg()
10184 return SemaBuiltinConstantArgRange(TheCall, 1, 0, *MaxLimit); in SemaBuiltinARMSpecialReg()
10194 bool Sema::SemaBuiltinPPCMMACall(CallExpr *TheCall, unsigned BuiltinID, in SemaBuiltinPPCMMACall() argument
10206 TheCall->setType(type); in SemaBuiltinPPCMMACall()
10211 if (ArgNum >= TheCall->getNumArgs()) { in SemaBuiltinPPCMMACall()
10216 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinPPCMMACall()
10239 SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, Mask, true)) in SemaBuiltinPPCMMACall()
10253 if (checkArgCount(*this, TheCall, ArgNum)) in SemaBuiltinPPCMMACall()
10262 bool Sema::SemaBuiltinLongjmp(CallExpr *TheCall) { in SemaBuiltinLongjmp() argument
10264 return Diag(TheCall->getBeginLoc(), diag::err_builtin_longjmp_unsupported) in SemaBuiltinLongjmp()
10265 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in SemaBuiltinLongjmp()
10267 Expr *Arg = TheCall->getArg(1); in SemaBuiltinLongjmp()
10271 if (SemaBuiltinConstantArg(TheCall, 1, Result)) in SemaBuiltinLongjmp()
10275 return Diag(TheCall->getBeginLoc(), diag::err_builtin_longjmp_invalid_val) in SemaBuiltinLongjmp()
10283 bool Sema::SemaBuiltinSetjmp(CallExpr *TheCall) { in SemaBuiltinSetjmp() argument
10285 return Diag(TheCall->getBeginLoc(), diag::err_builtin_setjmp_unsupported) in SemaBuiltinSetjmp()
10286 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in SemaBuiltinSetjmp()
15385 static void CheckImplicitArgumentConversions(Sema &S, CallExpr *TheCall, in CheckImplicitArgumentConversions() argument
15387 unsigned NumArgs = TheCall->getNumArgs(); in CheckImplicitArgumentConversions()
15389 Expr *CurrA = TheCall->getArg(i); in CheckImplicitArgumentConversions()
15394 IsImplicitBoolFloatConversion(S, TheCall->getArg(i - 1), false)); in CheckImplicitArgumentConversions()
15396 IsImplicitBoolFloatConversion(S, TheCall->getArg(i + 1), false)); in CheckImplicitArgumentConversions()
19598 bool Sema::PrepareBuiltinElementwiseMathOneArgCall(CallExpr *TheCall) { in PrepareBuiltinElementwiseMathOneArgCall() argument
19599 if (checkArgCount(*this, TheCall, 1)) in PrepareBuiltinElementwiseMathOneArgCall()
19602 ExprResult A = UsualUnaryConversions(TheCall->getArg(0)); in PrepareBuiltinElementwiseMathOneArgCall()
19606 TheCall->setArg(0, A.get()); in PrepareBuiltinElementwiseMathOneArgCall()
19612 TheCall->setType(TyA); in PrepareBuiltinElementwiseMathOneArgCall()
19616 bool Sema::SemaBuiltinElementwiseMath(CallExpr *TheCall) { in SemaBuiltinElementwiseMath() argument
19617 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinElementwiseMath()
19620 ExprResult A = TheCall->getArg(0); in SemaBuiltinElementwiseMath()
19621 ExprResult B = TheCall->getArg(1); in SemaBuiltinElementwiseMath()
19625 UsualArithmeticConversions(A, B, TheCall->getExprLoc(), ACK_Comparison); in SemaBuiltinElementwiseMath()
19640 TheCall->setArg(0, A.get()); in SemaBuiltinElementwiseMath()
19641 TheCall->setArg(1, B.get()); in SemaBuiltinElementwiseMath()
19642 TheCall->setType(Res); in SemaBuiltinElementwiseMath()
19646 bool Sema::SemaBuiltinElementwiseTernaryMath(CallExpr *TheCall) { in SemaBuiltinElementwiseTernaryMath() argument
19647 if (checkArgCount(*this, TheCall, 3)) in SemaBuiltinElementwiseTernaryMath()
19652 ExprResult Converted = UsualUnaryConversions(TheCall->getArg(I)); in SemaBuiltinElementwiseTernaryMath()
19673 TheCall->setArg(I, Args[I]); in SemaBuiltinElementwiseTernaryMath()
19676 TheCall->setType(Args[0]->getType()); in SemaBuiltinElementwiseTernaryMath()
19680 bool Sema::PrepareBuiltinReduceMathOneArgCall(CallExpr *TheCall) { in PrepareBuiltinReduceMathOneArgCall() argument
19681 if (checkArgCount(*this, TheCall, 1)) in PrepareBuiltinReduceMathOneArgCall()
19684 ExprResult A = UsualUnaryConversions(TheCall->getArg(0)); in PrepareBuiltinReduceMathOneArgCall()
19688 TheCall->setArg(0, A.get()); in PrepareBuiltinReduceMathOneArgCall()
19692 bool Sema::SemaBuiltinNonDeterministicValue(CallExpr *TheCall) { in SemaBuiltinNonDeterministicValue() argument
19693 if (checkArgCount(*this, TheCall, 1)) in SemaBuiltinNonDeterministicValue()
19696 ExprResult Arg = TheCall->getArg(0); in SemaBuiltinNonDeterministicValue()
19700 return Diag(TheCall->getArg(0)->getBeginLoc(), diag::err_builtin_invalid_arg_type) in SemaBuiltinNonDeterministicValue()
19703 TheCall->setType(TyArg); in SemaBuiltinNonDeterministicValue()
19707 ExprResult Sema::SemaBuiltinMatrixTranspose(CallExpr *TheCall, in SemaBuiltinMatrixTranspose() argument
19709 if (checkArgCount(*this, TheCall, 1)) in SemaBuiltinMatrixTranspose()
19712 ExprResult MatrixArg = DefaultLvalueConversion(TheCall->getArg(0)); in SemaBuiltinMatrixTranspose()
19730 TheCall->setType(ResultType); in SemaBuiltinMatrixTranspose()
19733 TheCall->setArg(0, Matrix); in SemaBuiltinMatrixTranspose()
19757 ExprResult Sema::SemaBuiltinMatrixColumnMajorLoad(CallExpr *TheCall, in SemaBuiltinMatrixColumnMajorLoad() argument
19760 Diag(TheCall->getBeginLoc(), diag::err_builtin_matrix_disabled); in SemaBuiltinMatrixColumnMajorLoad()
19764 if (checkArgCount(*this, TheCall, 4)) in SemaBuiltinMatrixColumnMajorLoad()
19768 Expr *PtrExpr = TheCall->getArg(PtrArgIdx); in SemaBuiltinMatrixColumnMajorLoad()
19769 Expr *RowsExpr = TheCall->getArg(1); in SemaBuiltinMatrixColumnMajorLoad()
19770 Expr *ColumnsExpr = TheCall->getArg(2); in SemaBuiltinMatrixColumnMajorLoad()
19771 Expr *StrideExpr = TheCall->getArg(3); in SemaBuiltinMatrixColumnMajorLoad()
19781 TheCall->setArg(0, PtrExpr); in SemaBuiltinMatrixColumnMajorLoad()
19783 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorLoad()
19784 return TheCall; in SemaBuiltinMatrixColumnMajorLoad()
19818 TheCall->setArg(1, RowsExpr); in SemaBuiltinMatrixColumnMajorLoad()
19825 TheCall->setArg(2, ColumnsExpr); in SemaBuiltinMatrixColumnMajorLoad()
19833 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorLoad()
19851 TheCall->setArg(3, StrideExpr); in SemaBuiltinMatrixColumnMajorLoad()
19868 TheCall->setType( in SemaBuiltinMatrixColumnMajorLoad()
19873 ExprResult Sema::SemaBuiltinMatrixColumnMajorStore(CallExpr *TheCall, in SemaBuiltinMatrixColumnMajorStore() argument
19875 if (checkArgCount(*this, TheCall, 3)) in SemaBuiltinMatrixColumnMajorStore()
19879 Expr *MatrixExpr = TheCall->getArg(0); in SemaBuiltinMatrixColumnMajorStore()
19880 Expr *PtrExpr = TheCall->getArg(PtrArgIdx); in SemaBuiltinMatrixColumnMajorStore()
19881 Expr *StrideExpr = TheCall->getArg(2); in SemaBuiltinMatrixColumnMajorStore()
19890 TheCall->setArg(0, MatrixExpr); in SemaBuiltinMatrixColumnMajorStore()
19893 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorStore()
19894 return TheCall; in SemaBuiltinMatrixColumnMajorStore()
19909 TheCall->setArg(1, PtrExpr); in SemaBuiltinMatrixColumnMajorStore()
19911 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorStore()
19912 return TheCall; in SemaBuiltinMatrixColumnMajorStore()
19949 TheCall->setArg(2, StrideExpr); in SemaBuiltinMatrixColumnMajorStore()
20000 bool Sema::BuiltinWasmTableGet(CallExpr *TheCall) { in BuiltinWasmTableGet() argument
20001 if (checkArgCount(*this, TheCall, 2)) in BuiltinWasmTableGet()
20005 if (CheckWasmBuiltinArgIsTable(*this, TheCall, 0, ElTy)) in BuiltinWasmTableGet()
20008 if (CheckWasmBuiltinArgIsInteger(*this, TheCall, 1)) in BuiltinWasmTableGet()
20015 TheCall->setType(ElTy); in BuiltinWasmTableGet()
20023 bool Sema::BuiltinWasmTableSet(CallExpr *TheCall) { in BuiltinWasmTableSet() argument
20024 if (checkArgCount(*this, TheCall, 3)) in BuiltinWasmTableSet()
20028 if (CheckWasmBuiltinArgIsTable(*this, TheCall, 0, ElTy)) in BuiltinWasmTableSet()
20031 if (CheckWasmBuiltinArgIsInteger(*this, TheCall, 1)) in BuiltinWasmTableSet()
20034 if (!Context.hasSameType(ElTy, TheCall->getArg(2)->getType())) in BuiltinWasmTableSet()
20041 bool Sema::BuiltinWasmTableSize(CallExpr *TheCall) { in BuiltinWasmTableSize() argument
20042 if (checkArgCount(*this, TheCall, 1)) in BuiltinWasmTableSize()
20046 if (CheckWasmBuiltinArgIsTable(*this, TheCall, 0, ElTy)) in BuiltinWasmTableSize()
20055 bool Sema::BuiltinWasmTableGrow(CallExpr *TheCall) { in BuiltinWasmTableGrow() argument
20056 if (checkArgCount(*this, TheCall, 3)) in BuiltinWasmTableGrow()
20060 if (CheckWasmBuiltinArgIsTable(*this, TheCall, 0, ElTy)) in BuiltinWasmTableGrow()
20063 Expr *NewElemArg = TheCall->getArg(1); in BuiltinWasmTableGrow()
20070 if (CheckWasmBuiltinArgIsInteger(*this, TheCall, 2)) in BuiltinWasmTableGrow()
20079 bool Sema::BuiltinWasmTableFill(CallExpr *TheCall) { in BuiltinWasmTableFill() argument
20080 if (checkArgCount(*this, TheCall, 4)) in BuiltinWasmTableFill()
20084 if (CheckWasmBuiltinArgIsTable(*this, TheCall, 0, ElTy)) in BuiltinWasmTableFill()
20087 if (CheckWasmBuiltinArgIsInteger(*this, TheCall, 1)) in BuiltinWasmTableFill()
20090 Expr *NewElemArg = TheCall->getArg(2); in BuiltinWasmTableFill()
20097 if (CheckWasmBuiltinArgIsInteger(*this, TheCall, 3)) in BuiltinWasmTableFill()
20106 bool Sema::BuiltinWasmTableCopy(CallExpr *TheCall) { in BuiltinWasmTableCopy() argument
20107 if (checkArgCount(*this, TheCall, 5)) in BuiltinWasmTableCopy()
20111 if (CheckWasmBuiltinArgIsTable(*this, TheCall, 0, XElTy)) in BuiltinWasmTableCopy()
20115 if (CheckWasmBuiltinArgIsTable(*this, TheCall, 1, YElTy)) in BuiltinWasmTableCopy()
20118 Expr *TableYArg = TheCall->getArg(1); in BuiltinWasmTableCopy()
20126 if (CheckWasmBuiltinArgIsInteger(*this, TheCall, I)) in BuiltinWasmTableCopy()