Lines Matching refs:TheCall

134 static bool SemaBuiltinAnnotation(Sema &S, CallExpr *TheCall) {  in SemaBuiltinAnnotation()  argument
135 if (checkArgCount(S, TheCall, 2)) in SemaBuiltinAnnotation()
139 Expr *ValArg = TheCall->getArg(0); in SemaBuiltinAnnotation()
148 Expr *StrArg = TheCall->getArg(1)->IgnoreParenCasts(); in SemaBuiltinAnnotation()
156 TheCall->setType(Ty); in SemaBuiltinAnnotation()
160 static bool SemaBuiltinMSVCAnnotation(Sema &S, CallExpr *TheCall) { in SemaBuiltinMSVCAnnotation() argument
162 if (TheCall->getNumArgs() < 1) { in SemaBuiltinMSVCAnnotation()
163 S.Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in SemaBuiltinMSVCAnnotation()
164 << 0 << 1 << TheCall->getNumArgs() in SemaBuiltinMSVCAnnotation()
165 << TheCall->getCallee()->getSourceRange(); in SemaBuiltinMSVCAnnotation()
170 for (Expr *Arg : TheCall->arguments()) { in SemaBuiltinMSVCAnnotation()
184 static bool SemaBuiltinAddressof(Sema &S, CallExpr *TheCall) { in SemaBuiltinAddressof() argument
185 if (checkArgCount(S, TheCall, 1)) in SemaBuiltinAddressof()
188 ExprResult Arg(TheCall->getArg(0)); in SemaBuiltinAddressof()
189 QualType ResultType = S.CheckAddressOfOperand(Arg, TheCall->getBeginLoc()); in SemaBuiltinAddressof()
193 TheCall->setArg(0, Arg.get()); in SemaBuiltinAddressof()
194 TheCall->setType(ResultType); in SemaBuiltinAddressof()
200 static bool SemaBuiltinPreserveAI(Sema &S, CallExpr *TheCall) { in SemaBuiltinPreserveAI() argument
201 if (checkArgCount(S, TheCall, 1)) in SemaBuiltinPreserveAI()
204 TheCall->setType(TheCall->getArg(0)->getType()); in SemaBuiltinPreserveAI()
211 static bool SemaBuiltinAlignment(Sema &S, CallExpr *TheCall, unsigned ID) { in SemaBuiltinAlignment() argument
212 if (checkArgCount(S, TheCall, 2)) in SemaBuiltinAlignment()
215 clang::Expr *Source = TheCall->getArg(0); in SemaBuiltinAlignment()
235 clang::Expr *AlignOp = TheCall->getArg(1); in SemaBuiltinAlignment()
274 TheCall->setArg(0, SrcArg.get()); in SemaBuiltinAlignment()
281 TheCall->setArg(1, AlignArg.get()); in SemaBuiltinAlignment()
285 TheCall->setType(IsBooleanAlignBuiltin ? S.Context.BoolTy : SrcTy); in SemaBuiltinAlignment()
289 static bool SemaBuiltinOverflow(Sema &S, CallExpr *TheCall, in SemaBuiltinOverflow() argument
291 if (checkArgCount(S, TheCall, 3)) in SemaBuiltinOverflow()
296 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(I)); in SemaBuiltinOverflow()
298 TheCall->setArg(I, Arg.get()); in SemaBuiltinOverflow()
312 ExprResult Arg = S.DefaultFunctionArrayLvalueConversion(TheCall->getArg(2)); in SemaBuiltinOverflow()
314 TheCall->setArg(2, Arg.get()); in SemaBuiltinOverflow()
332 const auto Arg = TheCall->getArg(I); in SemaBuiltinOverflow()
595 CallExpr *TheCall) { in checkFortifiedBuiltinMemoryFunction() argument
599 if (TheCall->isValueDependent() || TheCall->isTypeDependent() || in checkFortifiedBuiltinMemoryFunction()
620 auto *FormatExpr = TheCall->getArg(FormatIndex)->IgnoreParenImpCasts(); in checkFortifiedBuiltinMemoryFunction()
668 SizeIndex = TheCall->getNumArgs() - 2; in checkFortifiedBuiltinMemoryFunction()
669 ObjectIndex = TheCall->getNumArgs() - 1; in checkFortifiedBuiltinMemoryFunction()
694 SizeIndex = TheCall->getNumArgs() - 1; in checkFortifiedBuiltinMemoryFunction()
708 SizeIndex = TheCall->getNumArgs() - 1; in checkFortifiedBuiltinMemoryFunction()
728 Expr *SizeArg = TheCall->getArg(ObjectIndex); in checkFortifiedBuiltinMemoryFunction()
743 Expr *ObjArg = TheCall->getArg(ObjectIndex); in checkFortifiedBuiltinMemoryFunction()
754 Expr *UsedSizeArg = TheCall->getArg(SizeIndex); in checkFortifiedBuiltinMemoryFunction()
773 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in checkFortifiedBuiltinMemoryFunction()
779 static bool SemaBuiltinSEHScopeCheck(Sema &SemaRef, CallExpr *TheCall, in SemaBuiltinSEHScopeCheck() argument
792 auto *DRE = cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaBuiltinSEHScopeCheck()
793 SemaRef.Diag(TheCall->getExprLoc(), DiagID) in SemaBuiltinSEHScopeCheck()
849 static bool SemaOpenCLBuiltinNDRangeAndBlock(Sema &S, CallExpr *TheCall) { in SemaOpenCLBuiltinNDRangeAndBlock() argument
850 if (checkArgCount(S, TheCall, 2)) in SemaOpenCLBuiltinNDRangeAndBlock()
853 if (checkOpenCLSubgroupExt(S, TheCall)) in SemaOpenCLBuiltinNDRangeAndBlock()
857 Expr *NDRangeArg = TheCall->getArg(0); in SemaOpenCLBuiltinNDRangeAndBlock()
860 << TheCall->getDirectCallee() << "'ndrange_t'"; in SemaOpenCLBuiltinNDRangeAndBlock()
864 Expr *BlockArg = TheCall->getArg(1); in SemaOpenCLBuiltinNDRangeAndBlock()
867 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinNDRangeAndBlock()
876 static bool SemaOpenCLBuiltinKernelWorkGroupSize(Sema &S, CallExpr *TheCall) { in SemaOpenCLBuiltinKernelWorkGroupSize() argument
877 if (checkArgCount(S, TheCall, 1)) in SemaOpenCLBuiltinKernelWorkGroupSize()
880 Expr *BlockArg = TheCall->getArg(0); in SemaOpenCLBuiltinKernelWorkGroupSize()
883 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinKernelWorkGroupSize()
893 static bool checkOpenCLEnqueueLocalSizeArgs(Sema &S, CallExpr *TheCall, in checkOpenCLEnqueueLocalSizeArgs() argument
897 IllegalParams |= checkOpenCLEnqueueIntType(S, TheCall->getArg(I), in checkOpenCLEnqueueLocalSizeArgs()
904 static bool checkOpenCLEnqueueVariadicArgs(Sema &S, CallExpr *TheCall, in checkOpenCLEnqueueVariadicArgs() argument
911 unsigned TotalNumArgs = TheCall->getNumArgs(); in checkOpenCLEnqueueVariadicArgs()
916 S.Diag(TheCall->getBeginLoc(), in checkOpenCLEnqueueVariadicArgs()
922 return checkOpenCLEnqueueLocalSizeArgs(S, TheCall, NumNonVarArgs, in checkOpenCLEnqueueVariadicArgs()
952 static bool SemaOpenCLBuiltinEnqueueKernel(Sema &S, CallExpr *TheCall) { in SemaOpenCLBuiltinEnqueueKernel() argument
953 unsigned NumArgs = TheCall->getNumArgs(); in SemaOpenCLBuiltinEnqueueKernel()
956 S.Diag(TheCall->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
962 Expr *Arg0 = TheCall->getArg(0); in SemaOpenCLBuiltinEnqueueKernel()
963 Expr *Arg1 = TheCall->getArg(1); in SemaOpenCLBuiltinEnqueueKernel()
964 Expr *Arg2 = TheCall->getArg(2); in SemaOpenCLBuiltinEnqueueKernel()
965 Expr *Arg3 = TheCall->getArg(3); in SemaOpenCLBuiltinEnqueueKernel()
969 S.Diag(TheCall->getArg(0)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
971 << TheCall->getDirectCallee() << S.Context.OCLQueueTy; in SemaOpenCLBuiltinEnqueueKernel()
977 S.Diag(TheCall->getArg(1)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
979 << TheCall->getDirectCallee() << "'kernel_enqueue_flags_t' (i.e. uint)"; in SemaOpenCLBuiltinEnqueueKernel()
985 S.Diag(TheCall->getArg(2)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
987 << TheCall->getDirectCallee() << "'ndrange_t'"; in SemaOpenCLBuiltinEnqueueKernel()
997 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinEnqueueKernel()
1013 checkOpenCLEnqueueVariadicArgs(S, TheCall, Arg3, 4)); in SemaOpenCLBuiltinEnqueueKernel()
1017 Expr *Arg6 = TheCall->getArg(6); in SemaOpenCLBuiltinEnqueueKernel()
1020 << TheCall->getDirectCallee() << "block"; in SemaOpenCLBuiltinEnqueueKernel()
1028 S.Diag(TheCall->getArg(3)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1030 << TheCall->getDirectCallee() << "integer"; in SemaOpenCLBuiltinEnqueueKernel()
1034 Expr *Arg4 = TheCall->getArg(4); in SemaOpenCLBuiltinEnqueueKernel()
1035 Expr *Arg5 = TheCall->getArg(5); in SemaOpenCLBuiltinEnqueueKernel()
1041 S.Diag(TheCall->getArg(4)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1043 << TheCall->getDirectCallee() in SemaOpenCLBuiltinEnqueueKernel()
1053 S.Diag(TheCall->getArg(5)->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1055 << TheCall->getDirectCallee() in SemaOpenCLBuiltinEnqueueKernel()
1063 return checkOpenCLEnqueueVariadicArgs(S, TheCall, Arg6, 7); in SemaOpenCLBuiltinEnqueueKernel()
1067 S.Diag(TheCall->getBeginLoc(), in SemaOpenCLBuiltinEnqueueKernel()
1318 static ExprResult SemaBuiltinLaunder(Sema &S, CallExpr *TheCall) { in SemaBuiltinLaunder() argument
1319 if (checkArgCount(S, TheCall, 1)) in SemaBuiltinLaunder()
1328 QualType ArgTy = TheCall->getArg(0)->getType(); in SemaBuiltinLaunder()
1337 TheCall->setType(ParamTy); in SemaBuiltinLaunder()
1349 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_launder_invalid_arg) in SemaBuiltinLaunder()
1350 << DiagSelect.getValue() << TheCall->getSourceRange(); in SemaBuiltinLaunder()
1360 if (S.RequireCompleteType(TheCall->getBeginLoc(), ParamTy->getPointeeType(), in SemaBuiltinLaunder()
1370 S.PerformCopyInitialization(Entity, SourceLocation(), TheCall->getArg(0)); in SemaBuiltinLaunder()
1373 TheCall->setArg(0, Arg.get()); in SemaBuiltinLaunder()
1375 return TheCall; in SemaBuiltinLaunder()
1381 CheckBuiltinTargetSupport(Sema &S, unsigned BuiltinID, CallExpr *TheCall, in CheckBuiltinTargetSupport() argument
1387 S.Diag(TheCall->getBeginLoc(), diag::err_builtin_target_unsupported) in CheckBuiltinTargetSupport()
1388 << TheCall->getSourceRange(); in CheckBuiltinTargetSupport()
1396 CallExpr *TheCall) { in CheckTSBuiltinFunctionCall() argument
1406 return CheckARMBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1410 return CheckAArch64BuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1413 return CheckBPFBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1415 return CheckHexagonBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1420 return CheckMipsBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1422 return CheckSystemZBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1425 return CheckX86BuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1430 return CheckPPCBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1432 return CheckAMDGCNBuiltinFunctionCall(BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1435 return CheckRISCVBuiltinFunctionCall(TI, BuiltinID, TheCall); in CheckTSBuiltinFunctionCall()
1441 CallExpr *TheCall) { in CheckBuiltinFunctionCall() argument
1442 ExprResult TheCallResult(TheCall); in CheckBuiltinFunctionCall()
1457 if (SemaBuiltinConstantArg(TheCall, ArgNo, Result)) in CheckBuiltinFunctionCall()
1464 assert(TheCall->getNumArgs() == 1 && in CheckBuiltinFunctionCall()
1466 if (CheckObjCString(TheCall->getArg(0))) in CheckBuiltinFunctionCall()
1472 if (SemaBuiltinVAStart(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
1480 if (SemaBuiltinVAStartARMMicrosoft(TheCall)) in CheckBuiltinFunctionCall()
1484 if (SemaBuiltinVAStart(BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
1499 *this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
1511 if (CheckBuiltinTargetSupport(*this, BuiltinID, TheCall, in CheckBuiltinFunctionCall()
1523 if (SemaBuiltinUnorderedCompare(TheCall)) in CheckBuiltinFunctionCall()
1527 if (SemaBuiltinFPClassification(TheCall, 6)) in CheckBuiltinFunctionCall()
1538 if (SemaBuiltinFPClassification(TheCall, 1)) in CheckBuiltinFunctionCall()
1542 return SemaBuiltinShuffleVector(TheCall); in CheckBuiltinFunctionCall()
1546 if (SemaBuiltinPrefetch(TheCall)) in CheckBuiltinFunctionCall()
1550 if (SemaBuiltinAllocaWithAlign(TheCall)) in CheckBuiltinFunctionCall()
1554 Diag(TheCall->getBeginLoc(), diag::warn_alloca) in CheckBuiltinFunctionCall()
1555 << TheCall->getDirectCallee(); in CheckBuiltinFunctionCall()
1559 if (SemaBuiltinAssume(TheCall)) in CheckBuiltinFunctionCall()
1563 if (SemaBuiltinAssumeAligned(TheCall)) in CheckBuiltinFunctionCall()
1568 if (SemaBuiltinConstantArgRange(TheCall, 1, 0, 3)) in CheckBuiltinFunctionCall()
1572 if (SemaBuiltinLongjmp(TheCall)) in CheckBuiltinFunctionCall()
1576 if (SemaBuiltinSetjmp(TheCall)) in CheckBuiltinFunctionCall()
1580 if (checkArgCount(*this, TheCall, 1)) return true; in CheckBuiltinFunctionCall()
1581 TheCall->setType(Context.IntTy); in CheckBuiltinFunctionCall()
1584 if (SemaBuiltinComplex(TheCall)) in CheckBuiltinFunctionCall()
1588 if (checkArgCount(*this, TheCall, 1)) return true; in CheckBuiltinFunctionCall()
1589 ExprResult Arg = DefaultFunctionArrayLvalueConversion(TheCall->getArg(0)); in CheckBuiltinFunctionCall()
1591 TheCall->setArg(0, Arg.get()); in CheckBuiltinFunctionCall()
1592 TheCall->setType(Context.IntTy); in CheckBuiltinFunctionCall()
1596 return SemaBuiltinLaunder(*this, TheCall); in CheckBuiltinFunctionCall()
1701 Diag(TheCall->getBeginLoc(), diag::warn_atomic_implicit_seq_cst) in CheckBuiltinFunctionCall()
1702 << TheCall->getCallee()->getSourceRange(); in CheckBuiltinFunctionCall()
1708 clang::Expr *SizeOp = TheCall->getArg(2); in CheckBuiltinFunctionCall()
1715 CheckNonNullArgument(*this, TheCall->getArg(0), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
1716 CheckNonNullArgument(*this, TheCall->getArg(1), TheCall->getExprLoc()); in CheckBuiltinFunctionCall()
1726 if (SemaBuiltinMSVCAnnotation(*this, TheCall)) in CheckBuiltinFunctionCall()
1730 if (SemaBuiltinAnnotation(*this, TheCall)) in CheckBuiltinFunctionCall()
1734 if (SemaBuiltinAddressof(*this, TheCall)) in CheckBuiltinFunctionCall()
1740 if (SemaBuiltinAlignment(*this, TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
1746 if (SemaBuiltinOverflow(*this, TheCall, BuiltinID)) in CheckBuiltinFunctionCall()
1760 if (checkArgCount(*this, TheCall, 2)) in CheckBuiltinFunctionCall()
1763 const Expr *PtrArg = TheCall->getArg(0)->IgnoreParenImpCasts(); in CheckBuiltinFunctionCall()
1774 const Expr *FnPtrArg = TheCall->getArg(1)->IgnoreImpCasts(); in CheckBuiltinFunctionCall()
1811 TheCall->setType(Context.IntTy); in CheckBuiltinFunctionCall()
1816 if (checkArgCount(*this, TheCall, 3)) in CheckBuiltinFunctionCall()
1819 const Expr *ProbArg = TheCall->getArg(2); in CheckBuiltinFunctionCall()
1844 if (SemaBuiltinPreserveAI(*this, TheCall)) in CheckBuiltinFunctionCall()
1848 if (SemaBuiltinCallWithStaticChain(*this, TheCall)) in CheckBuiltinFunctionCall()
1853 if (SemaBuiltinSEHScopeCheck(*this, TheCall, Scope::SEHExceptScope, in CheckBuiltinFunctionCall()
1859 if (SemaBuiltinSEHScopeCheck(*this, TheCall, Scope::SEHFilterScope, in CheckBuiltinFunctionCall()
1864 if (checkArgCount(*this, TheCall, 1)) in CheckBuiltinFunctionCall()
1868 TheCall->getBeginLoc(), in CheckBuiltinFunctionCall()
1870 TheCall)) in CheckBuiltinFunctionCall()
1873 TheCall->setType(Context.VoidPtrTy); in CheckBuiltinFunctionCall()
1880 if (SemaBuiltinRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
1887 if (SemaBuiltinReserveRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
1892 if (checkOpenCLSubgroupExt(*this, TheCall) || in CheckBuiltinFunctionCall()
1893 SemaBuiltinReserveRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
1900 if (SemaBuiltinCommitRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
1905 if (checkOpenCLSubgroupExt(*this, TheCall) || in CheckBuiltinFunctionCall()
1906 SemaBuiltinCommitRWPipe(*this, TheCall)) in CheckBuiltinFunctionCall()
1911 if (SemaBuiltinPipePackets(*this, TheCall)) in CheckBuiltinFunctionCall()
1917 if (SemaOpenCLBuiltinToAddr(*this, BuiltinID, TheCall)) in CheckBuiltinFunctionCall()
1922 if (SemaOpenCLBuiltinEnqueueKernel(*this, TheCall)) in CheckBuiltinFunctionCall()
1927 if (SemaOpenCLBuiltinKernelWorkGroupSize(*this, TheCall)) in CheckBuiltinFunctionCall()
1932 if (SemaOpenCLBuiltinNDRangeAndBlock(*this, TheCall)) in CheckBuiltinFunctionCall()
1939 if (SemaBuiltinOSLogFormat(TheCall)) in CheckBuiltinFunctionCall()
1944 if (SemaBuiltinConstantArgRange(TheCall, 0, 0, 0xFFFF)) in CheckBuiltinFunctionCall()
1950 if (!TheCall->getArg(0)->isValueDependent() && in CheckBuiltinFunctionCall()
1951 TheCall->getArg(0)->EvaluateAsInt(Result, getASTContext()) && in CheckBuiltinFunctionCall()
1953 Diag(TheCall->getBeginLoc(), diag::warn_frame_address) in CheckBuiltinFunctionCall()
1957 << TheCall->getSourceRange(); in CheckBuiltinFunctionCall()
1962 return SemaBuiltinMatrixTranspose(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
1965 return SemaBuiltinMatrixColumnMajorLoad(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
1968 return SemaBuiltinMatrixColumnMajorStore(TheCall, TheCallResult); in CheckBuiltinFunctionCall()
1971 auto Check = [](CallExpr *TheCall) { in CheckBuiltinFunctionCall() argument
1972 if (TheCall->getNumArgs() != 1) in CheckBuiltinFunctionCall()
1974 auto *DRE = dyn_cast<DeclRefExpr>(TheCall->getArg(0)->IgnoreImpCasts()); in CheckBuiltinFunctionCall()
1983 if (!Check(TheCall)) { in CheckBuiltinFunctionCall()
1984 Diag(TheCall->getBeginLoc(), in CheckBuiltinFunctionCall()
2000 Context.BuiltinInfo.getAuxBuiltinID(BuiltinID), TheCall)) in CheckBuiltinFunctionCall()
2004 TheCall)) in CheckBuiltinFunctionCall()
2087 bool Sema::CheckSVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { in CheckSVEBuiltinFunctionCall() argument
2112 Expr *Arg = TheCall->getArg(ArgNum); in CheckSVEBuiltinFunctionCall()
2118 if (SemaBuiltinConstantArg(TheCall, ArgNum, Imm)) in CheckSVEBuiltinFunctionCall()
2122 return Diag(TheCall->getBeginLoc(), ErrDiag) << Arg->getSourceRange(); in CheckSVEBuiltinFunctionCall()
2128 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 31)) in CheckSVEBuiltinFunctionCall()
2132 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 13)) in CheckSVEBuiltinFunctionCall()
2136 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, 16)) in CheckSVEBuiltinFunctionCall()
2140 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 7)) in CheckSVEBuiltinFunctionCall()
2144 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in CheckSVEBuiltinFunctionCall()
2149 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, ElementSizeInBits)) in CheckSVEBuiltinFunctionCall()
2153 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 1, in CheckSVEBuiltinFunctionCall()
2158 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in CheckSVEBuiltinFunctionCall()
2163 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in CheckSVEBuiltinFunctionCall()
2168 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in CheckSVEBuiltinFunctionCall()
2173 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, in CheckSVEBuiltinFunctionCall()
2191 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 1)) in CheckSVEBuiltinFunctionCall()
2195 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 2)) in CheckSVEBuiltinFunctionCall()
2199 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 3)) in CheckSVEBuiltinFunctionCall()
2209 unsigned BuiltinID, CallExpr *TheCall) { in CheckNeonBuiltinFunctionCall() argument
2224 unsigned ImmArg = TheCall->getNumArgs()-1; in CheckNeonBuiltinFunctionCall()
2226 if (SemaBuiltinConstantArg(TheCall, ImmArg, Result)) in CheckNeonBuiltinFunctionCall()
2231 return Diag(TheCall->getBeginLoc(), diag::err_invalid_neon_type_code) in CheckNeonBuiltinFunctionCall()
2232 << TheCall->getArg(ImmArg)->getSourceRange(); in CheckNeonBuiltinFunctionCall()
2237 Expr *Arg = TheCall->getArg(PtrArgNum); in CheckNeonBuiltinFunctionCall()
2274 return SemaBuiltinConstantArgRange(TheCall, i, l, u + l); in CheckNeonBuiltinFunctionCall()
2277 bool Sema::CheckMVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { in CheckMVEBuiltinFunctionCall() argument
2286 CallExpr *TheCall) { in CheckCDEBuiltinFunctionCall() argument
2297 return CheckARMCoprocessorImmediate(TI, TheCall->getArg(0), /*WantCDE*/ true); in CheckCDEBuiltinFunctionCall()
2323 bool Sema::CheckARMBuiltinExclusiveCall(unsigned BuiltinID, CallExpr *TheCall, in CheckARMBuiltinExclusiveCall() argument
2339 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in CheckARMBuiltinExclusiveCall()
2342 if (checkArgCount(*this, TheCall, IsLdrex ? 1 : 2)) in CheckARMBuiltinExclusiveCall()
2349 Expr *PointerArg = TheCall->getArg(IsLdrex ? 0 : 1); in CheckARMBuiltinExclusiveCall()
2386 TheCall->setArg(IsLdrex ? 0 : 1, PointerArg); in CheckARMBuiltinExclusiveCall()
2419 TheCall->setType(ValType); in CheckARMBuiltinExclusiveCall()
2424 ExprResult ValArg = TheCall->getArg(0); in CheckARMBuiltinExclusiveCall()
2430 TheCall->setArg(0, ValArg.get()); in CheckARMBuiltinExclusiveCall()
2434 TheCall->setType(Context.IntTy); in CheckARMBuiltinExclusiveCall()
2439 CallExpr *TheCall) { in CheckARMBuiltinFunctionCall() argument
2444 return CheckARMBuiltinExclusiveCall(BuiltinID, TheCall, 64); in CheckARMBuiltinFunctionCall()
2448 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1) || in CheckARMBuiltinFunctionCall()
2449 SemaBuiltinConstantArgRange(TheCall, 2, 0, 1); in CheckARMBuiltinFunctionCall()
2454 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 3, false); in CheckARMBuiltinFunctionCall()
2460 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true); in CheckARMBuiltinFunctionCall()
2462 if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall)) in CheckARMBuiltinFunctionCall()
2464 if (CheckMVEBuiltinFunctionCall(BuiltinID, TheCall)) in CheckARMBuiltinFunctionCall()
2466 if (CheckCDEBuiltinFunctionCall(TI, BuiltinID, TheCall)) in CheckARMBuiltinFunctionCall()
2475 return SemaBuiltinConstantArgRange(TheCall, 1, 1, 32); in CheckARMBuiltinFunctionCall()
2477 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 31); in CheckARMBuiltinFunctionCall()
2479 return SemaBuiltinConstantArgRange(TheCall, 1, 1, 16); in CheckARMBuiltinFunctionCall()
2481 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in CheckARMBuiltinFunctionCall()
2484 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1); in CheckARMBuiltinFunctionCall()
2489 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 15); in CheckARMBuiltinFunctionCall()
2508 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 15) || in CheckARMBuiltinFunctionCall()
2509 CheckARMCoprocessorImmediate(TI, TheCall->getArg(0), in CheckARMBuiltinFunctionCall()
2516 CallExpr *TheCall) { in CheckAArch64BuiltinFunctionCall() argument
2521 return CheckARMBuiltinExclusiveCall(BuiltinID, TheCall, 128); in CheckAArch64BuiltinFunctionCall()
2525 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1) || in CheckAArch64BuiltinFunctionCall()
2526 SemaBuiltinConstantArgRange(TheCall, 2, 0, 2) || in CheckAArch64BuiltinFunctionCall()
2527 SemaBuiltinConstantArgRange(TheCall, 3, 0, 1) || in CheckAArch64BuiltinFunctionCall()
2528 SemaBuiltinConstantArgRange(TheCall, 4, 0, 1); in CheckAArch64BuiltinFunctionCall()
2533 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true); in CheckAArch64BuiltinFunctionCall()
2542 return SemaBuiltinARMMemoryTaggingCall(BuiltinID, TheCall); in CheckAArch64BuiltinFunctionCall()
2549 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true); in CheckAArch64BuiltinFunctionCall()
2556 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 0x7fff); in CheckAArch64BuiltinFunctionCall()
2559 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31); in CheckAArch64BuiltinFunctionCall()
2561 if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall)) in CheckAArch64BuiltinFunctionCall()
2564 if (CheckSVEBuiltinFunctionCall(BuiltinID, TheCall)) in CheckAArch64BuiltinFunctionCall()
2578 return SemaBuiltinConstantArgRange(TheCall, i, l, u + l); in CheckAArch64BuiltinFunctionCall()
2682 CallExpr *TheCall) { in CheckBPFBuiltinFunctionCall() argument
2689 if (checkArgCount(*this, TheCall, 2)) in CheckBPFBuiltinFunctionCall()
2693 Expr *Arg = TheCall->getArg(1); in CheckBPFBuiltinFunctionCall()
2710 Arg = TheCall->getArg(0); in CheckBPFBuiltinFunctionCall()
2739 TheCall->setType(Context.UnsignedIntTy); in CheckBPFBuiltinFunctionCall()
2741 TheCall->setType(Context.UnsignedLongTy); in CheckBPFBuiltinFunctionCall()
2745 bool Sema::CheckHexagonBuiltinArgument(unsigned BuiltinID, CallExpr *TheCall) { in CheckHexagonBuiltinArgument() argument
2968 Error |= SemaBuiltinConstantArgRange(TheCall, A.OpNum, Min, Max); in CheckHexagonBuiltinArgument()
2973 Error |= SemaBuiltinConstantArgRange(TheCall, A.OpNum, Min, Max) | in CheckHexagonBuiltinArgument()
2974 SemaBuiltinConstantArgMultiple(TheCall, A.OpNum, M); in CheckHexagonBuiltinArgument()
2981 CallExpr *TheCall) { in CheckHexagonBuiltinFunctionCall() argument
2982 return CheckHexagonBuiltinArgument(BuiltinID, TheCall); in CheckHexagonBuiltinFunctionCall()
2986 unsigned BuiltinID, CallExpr *TheCall) { in CheckMipsBuiltinFunctionCall() argument
2987 return CheckMipsBuiltinCpu(TI, BuiltinID, TheCall) || in CheckMipsBuiltinFunctionCall()
2988 CheckMipsBuiltinArgument(BuiltinID, TheCall); in CheckMipsBuiltinFunctionCall()
2992 CallExpr *TheCall) { in CheckMipsBuiltinCpu() argument
2997 return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_dsp); in CheckMipsBuiltinCpu()
3003 return Diag(TheCall->getBeginLoc(), in CheckMipsBuiltinCpu()
3010 return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_msa); in CheckMipsBuiltinCpu()
3025 bool Sema::CheckMipsBuiltinArgument(unsigned BuiltinID, CallExpr *TheCall) { in CheckMipsBuiltinArgument() argument
3196 return SemaBuiltinConstantArgRange(TheCall, i, l, u); in CheckMipsBuiltinArgument()
3198 return SemaBuiltinConstantArgRange(TheCall, i, l, u) || in CheckMipsBuiltinArgument()
3199 SemaBuiltinConstantArgMultiple(TheCall, i, m); in CheckMipsBuiltinArgument()
3259 CallExpr *TheCall) { in CheckPPCBuiltinFunctionCall() argument
3271 return Diag(TheCall->getBeginLoc(), diag::err_64_bit_builtin_32_bit_tgt) in CheckPPCBuiltinFunctionCall()
3272 << TheCall->getSourceRange(); in CheckPPCBuiltinFunctionCall()
3276 return Diag(TheCall->getBeginLoc(), diag::err_ppc_builtin_only_on_pwr7) in CheckPPCBuiltinFunctionCall()
3277 << TheCall->getSourceRange(); in CheckPPCBuiltinFunctionCall()
3279 auto SemaVSXCheck = [&](CallExpr *TheCall) -> bool { in CheckPPCBuiltinFunctionCall() argument
3281 return Diag(TheCall->getBeginLoc(), diag::err_ppc_builtin_only_on_pwr7) in CheckPPCBuiltinFunctionCall()
3282 << TheCall->getSourceRange(); in CheckPPCBuiltinFunctionCall()
3290 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 1) || in CheckPPCBuiltinFunctionCall()
3291 SemaBuiltinConstantArgRange(TheCall, 2, 0, 15); in CheckPPCBuiltinFunctionCall()
3293 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3); in CheckPPCBuiltinFunctionCall()
3301 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31) || in CheckPPCBuiltinFunctionCall()
3302 SemaBuiltinConstantArgRange(TheCall, 2, 0, 31); in CheckPPCBuiltinFunctionCall()
3307 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 3); in CheckPPCBuiltinFunctionCall()
3310 return SemaBuiltinVSX(TheCall); in CheckPPCBuiltinFunctionCall()
3312 return SemaVSXCheck(TheCall) || in CheckPPCBuiltinFunctionCall()
3313 SemaBuiltinConstantArgRange(TheCall, 1, 0, 1); in CheckPPCBuiltinFunctionCall()
3315 return SemaVSXCheck(TheCall); in CheckPPCBuiltinFunctionCall()
3317 return SemaBuiltinConstantArgRange(TheCall, 1, 2, 7); in CheckPPCBuiltinFunctionCall()
3320 QualType VecTy = TheCall->getArg(0)->getType(); in CheckPPCBuiltinFunctionCall()
3321 QualType EltTy = TheCall->getArg(1)->getType(); in CheckPPCBuiltinFunctionCall()
3323 return SemaBuiltinConstantArgRange(TheCall, 2, 0, Width == 32 ? 12 : 8) || in CheckPPCBuiltinFunctionCall()
3324 !isEltOfVectorTy(Context, TheCall, *this, VecTy, EltTy); in CheckPPCBuiltinFunctionCall()
3327 return SemaBuiltinConstantArgRange(TheCall, 3, 0, 255); in CheckPPCBuiltinFunctionCall()
3329 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 7); in CheckPPCBuiltinFunctionCall()
3331 return SemaBuiltinConstantArgRange(TheCall, 2, 0, 7); in CheckPPCBuiltinFunctionCall()
3333 return SemaBuiltinConstantArgRange(TheCall, 3, 0, 7); in CheckPPCBuiltinFunctionCall()
3336 return SemaBuiltinPPCMMACall(TheCall, Types); in CheckPPCBuiltinFunctionCall()
3339 return SemaBuiltinConstantArgRange(TheCall, i, l, u); in CheckPPCBuiltinFunctionCall()
3360 CallExpr *TheCall) { in CheckAMDGCNBuiltinFunctionCall() argument
3379 ExprResult Arg = TheCall->getArg(OrderIndex); in CheckAMDGCNBuiltinFunctionCall()
3409 Arg = TheCall->getArg(ScopeIndex); in CheckAMDGCNBuiltinFunctionCall()
3420 bool Sema::CheckRISCVLMUL(CallExpr *TheCall, unsigned ArgNum) { in CheckRISCVLMUL() argument
3424 Expr *Arg = TheCall->getArg(ArgNum); in CheckRISCVLMUL()
3429 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckRISCVLMUL()
3436 return Diag(TheCall->getBeginLoc(), diag::err_riscv_builtin_invalid_lmul) in CheckRISCVLMUL()
3442 CallExpr *TheCall) { in CheckRISCVBuiltinFunctionCall() argument
3467 Diag(TheCall->getBeginLoc(), diag::err_riscv_builtin_requires_extension) in CheckRISCVBuiltinFunctionCall()
3468 << TheCall->getSourceRange() << StringRef(FeatureStr); in CheckRISCVBuiltinFunctionCall()
3476 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 3) || in CheckRISCVBuiltinFunctionCall()
3477 CheckRISCVLMUL(TheCall, 2); in CheckRISCVBuiltinFunctionCall()
3479 return SemaBuiltinConstantArgRange(TheCall, 0, 0, 3) || in CheckRISCVBuiltinFunctionCall()
3480 CheckRISCVLMUL(TheCall, 1); in CheckRISCVBuiltinFunctionCall()
3487 CallExpr *TheCall) { in CheckSystemZBuiltinFunctionCall() argument
3489 Expr *Arg = TheCall->getArg(0); in CheckSystemZBuiltinFunctionCall()
3520 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15) || in CheckSystemZBuiltinFunctionCall()
3521 SemaBuiltinConstantArgRange(TheCall, 2, 0, 15); in CheckSystemZBuiltinFunctionCall()
3547 return SemaBuiltinConstantArgRange(TheCall, i, l, u); in CheckSystemZBuiltinFunctionCall()
3554 CallExpr *TheCall) { in SemaBuiltinCpuSupports() argument
3555 Expr *Arg = TheCall->getArg(0); in SemaBuiltinCpuSupports()
3559 return S.Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in SemaBuiltinCpuSupports()
3566 return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_supports) in SemaBuiltinCpuSupports()
3574 static bool SemaBuiltinCpuIs(Sema &S, const TargetInfo &TI, CallExpr *TheCall) { in SemaBuiltinCpuIs() argument
3575 Expr *Arg = TheCall->getArg(0); in SemaBuiltinCpuIs()
3579 return S.Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in SemaBuiltinCpuIs()
3586 return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_is) in SemaBuiltinCpuIs()
3592 bool Sema::CheckX86BuiltinRoundingOrSAE(unsigned BuiltinID, CallExpr *TheCall) { in CheckX86BuiltinRoundingOrSAE() argument
3774 Expr *Arg = TheCall->getArg(ArgNum); in CheckX86BuiltinRoundingOrSAE()
3779 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckX86BuiltinRoundingOrSAE()
3792 return Diag(TheCall->getBeginLoc(), diag::err_x86_builtin_invalid_rounding) in CheckX86BuiltinRoundingOrSAE()
3798 CallExpr *TheCall) { in CheckX86BuiltinGatherScatterScale() argument
3884 Expr *Arg = TheCall->getArg(ArgNum); in CheckX86BuiltinGatherScatterScale()
3889 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckX86BuiltinGatherScatterScale()
3895 return Diag(TheCall->getBeginLoc(), diag::err_x86_builtin_invalid_scale) in CheckX86BuiltinGatherScatterScale()
3901 bool Sema::CheckX86BuiltinTileArgumentsRange(CallExpr *TheCall, in CheckX86BuiltinTileArgumentsRange() argument
3904 if (SemaBuiltinConstantArgRange(TheCall, ArgNum, TileRegLow, TileRegHigh)) in CheckX86BuiltinTileArgumentsRange()
3910 bool Sema::CheckX86BuiltinTileDuplicate(CallExpr *TheCall, in CheckX86BuiltinTileDuplicate() argument
3916 Expr *Arg = TheCall->getArg(ArgNum); in CheckX86BuiltinTileDuplicate()
3921 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in CheckX86BuiltinTileDuplicate()
3927 return Diag(TheCall->getBeginLoc(), in CheckX86BuiltinTileDuplicate()
3929 << TheCall->getArg(ArgNum)->getSourceRange(); in CheckX86BuiltinTileDuplicate()
3935 bool Sema::CheckX86BuiltinTileRangeAndDuplicate(CallExpr *TheCall, in CheckX86BuiltinTileRangeAndDuplicate() argument
3937 return CheckX86BuiltinTileArgumentsRange(TheCall, ArgNums) || in CheckX86BuiltinTileRangeAndDuplicate()
3938 CheckX86BuiltinTileDuplicate(TheCall, ArgNums); in CheckX86BuiltinTileRangeAndDuplicate()
3941 bool Sema::CheckX86BuiltinTileArguments(unsigned BuiltinID, CallExpr *TheCall) { in CheckX86BuiltinTileArguments() argument
3949 return CheckX86BuiltinTileArgumentsRange(TheCall, 0); in CheckX86BuiltinTileArguments()
3955 return CheckX86BuiltinTileRangeAndDuplicate(TheCall, {0, 1, 2}); in CheckX86BuiltinTileArguments()
3970 CallExpr *TheCall) { in CheckX86BuiltinFunctionCall() argument
3972 return SemaBuiltinCpuSupports(*this, TI, TheCall); in CheckX86BuiltinFunctionCall()
3975 return SemaBuiltinCpuIs(*this, TI, TheCall); in CheckX86BuiltinFunctionCall()
3980 return Diag(TheCall->getCallee()->getBeginLoc(), in CheckX86BuiltinFunctionCall()
3984 if (CheckX86BuiltinRoundingOrSAE(BuiltinID, TheCall)) in CheckX86BuiltinFunctionCall()
3988 if (CheckX86BuiltinGatherScatterScale(BuiltinID, TheCall)) in CheckX86BuiltinFunctionCall()
3992 if (CheckX86BuiltinTileArguments(BuiltinID, TheCall)) in CheckX86BuiltinFunctionCall()
4331 return SemaBuiltinConstantArgRange(TheCall, i, l, u, /*RangeIsError*/ false); in CheckX86BuiltinFunctionCall()
4706 bool Sema::CheckFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall, in CheckFunctionCall() argument
4708 bool IsMemberOperatorCall = isa<CXXOperatorCallExpr>(TheCall) && in CheckFunctionCall()
4710 bool IsMemberFunction = isa<CXXMemberCallExpr>(TheCall) || in CheckFunctionCall()
4713 TheCall->getCallee()); in CheckFunctionCall()
4714 Expr** Args = TheCall->getArgs(); in CheckFunctionCall()
4715 unsigned NumArgs = TheCall->getNumArgs(); in CheckFunctionCall()
4727 cast<CXXMemberCallExpr>(TheCall)->getImplicitObjectArgument(); in CheckFunctionCall()
4741 CheckArgAlignment(TheCall->getRParenLoc(), FDecl, "'this'", ThisType, in CheckFunctionCall()
4746 IsMemberFunction, TheCall->getRParenLoc(), in CheckFunctionCall()
4747 TheCall->getCallee()->getSourceRange(), CallType); in CheckFunctionCall()
4755 CheckTCBEnforcement(TheCall, FDecl); in CheckFunctionCall()
4757 CheckAbsoluteValueFunction(TheCall, FDecl); in CheckFunctionCall()
4758 CheckMaxUnsignedZero(TheCall, FDecl); in CheckFunctionCall()
4771 CheckStrlcpycatArguments(TheCall, FnInfo); in CheckFunctionCall()
4774 CheckStrncatArguments(TheCall, FnInfo); in CheckFunctionCall()
4777 CheckFreeArguments(TheCall); in CheckFunctionCall()
4780 CheckMemaccessArguments(TheCall, CMId, FnInfo); in CheckFunctionCall()
4798 bool Sema::CheckPointerCall(NamedDecl *NDecl, CallExpr *TheCall, in CheckPointerCall() argument
4822 llvm::makeArrayRef(TheCall->getArgs(), TheCall->getNumArgs()), in CheckPointerCall()
4823 /*IsMemberFunction=*/false, TheCall->getRParenLoc(), in CheckPointerCall()
4824 TheCall->getCallee()->getSourceRange(), CallType); in CheckPointerCall()
4831 bool Sema::CheckOtherCall(CallExpr *TheCall, const FunctionProtoType *Proto) { in CheckOtherCall() argument
4833 TheCall->getCallee()); in CheckOtherCall()
4835 llvm::makeArrayRef(TheCall->getArgs(), TheCall->getNumArgs()), in CheckOtherCall()
4836 /*IsMemberFunction=*/false, TheCall->getRParenLoc(), in CheckOtherCall()
4837 TheCall->getCallee()->getSourceRange(), CallType); in CheckOtherCall()
4874 CallExpr *TheCall = cast<CallExpr>(TheCallResult.get()); in SemaAtomicOpsOverloaded() local
4875 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaAtomicOpsOverloaded()
4876 MultiExprArg Args{TheCall->getArgs(), TheCall->getNumArgs()}; in SemaAtomicOpsOverloaded()
4877 return BuildAtomicExpr({TheCall->getBeginLoc(), TheCall->getEndLoc()}, in SemaAtomicOpsOverloaded()
4878 DRE->getSourceRange(), TheCall->getRParenLoc(), Args, in SemaAtomicOpsOverloaded()
5397 CallExpr *TheCall = static_cast<CallExpr *>(TheCallResult.get()); in SemaBuiltinAtomicOverloaded() local
5398 Expr *Callee = TheCall->getCallee(); in SemaBuiltinAtomicOverloaded()
5403 if (TheCall->getNumArgs() < 1) { in SemaBuiltinAtomicOverloaded()
5404 Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in SemaBuiltinAtomicOverloaded()
5405 << 0 << 1 << TheCall->getNumArgs() << Callee->getSourceRange(); in SemaBuiltinAtomicOverloaded()
5414 Expr *FirstArg = TheCall->getArg(0); in SemaBuiltinAtomicOverloaded()
5419 TheCall->setArg(0, FirstArg); in SemaBuiltinAtomicOverloaded()
5679 if (TheCall->getNumArgs() < 1+NumFixed) { in SemaBuiltinAtomicOverloaded()
5680 Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args_at_least) in SemaBuiltinAtomicOverloaded()
5681 << 0 << 1 + NumFixed << TheCall->getNumArgs() in SemaBuiltinAtomicOverloaded()
5686 Diag(TheCall->getEndLoc(), diag::warn_atomic_implicit_seq_cst) in SemaBuiltinAtomicOverloaded()
5690 Diag(TheCall->getEndLoc(), diag::warn_sync_fetch_and_nand_semantics_change) in SemaBuiltinAtomicOverloaded()
5716 ExprResult Arg = TheCall->getArg(i+1); in SemaBuiltinAtomicOverloaded()
5733 TheCall->setArg(i+1, Arg.get()); in SemaBuiltinAtomicOverloaded()
5747 TheCall->setCallee(PromotedCall.get()); in SemaBuiltinAtomicOverloaded()
5752 TheCall->setType(ResultType); in SemaBuiltinAtomicOverloaded()
5773 CallExpr *TheCall = (CallExpr *)TheCallResult.get(); in SemaBuiltinNontemporalOverloaded() local
5775 cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaBuiltinNontemporalOverloaded()
5785 if (checkArgCount(*this, TheCall, numArgs)) in SemaBuiltinNontemporalOverloaded()
5792 Expr *PointerArg = TheCall->getArg(numArgs - 1); in SemaBuiltinNontemporalOverloaded()
5799 TheCall->setArg(numArgs - 1, PointerArg); in SemaBuiltinNontemporalOverloaded()
5822 TheCall->setType(ValType); in SemaBuiltinNontemporalOverloaded()
5826 ExprResult ValArg = TheCall->getArg(0); in SemaBuiltinNontemporalOverloaded()
5833 TheCall->setArg(0, ValArg.get()); in SemaBuiltinNontemporalOverloaded()
5834 TheCall->setType(Context.VoidTy); in SemaBuiltinNontemporalOverloaded()
5973 bool Sema::SemaBuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) { in SemaBuiltinVAStart() argument
5974 Expr *Fn = TheCall->getCallee(); in SemaBuiltinVAStart()
5979 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinVAStart()
5983 if (checkBuiltinArgument(*this, TheCall, 0)) in SemaBuiltinVAStart()
5994 const Expr *Arg = TheCall->getArg(1)->IgnoreParenCasts(); in SemaBuiltinVAStart()
6014 Diag(TheCall->getArg(1)->getBeginLoc(), in SemaBuiltinVAStart()
6035 TheCall->setType(Context.VoidTy); in SemaBuiltinVAStart()
6089 bool Sema::SemaBuiltinUnorderedCompare(CallExpr *TheCall) { in SemaBuiltinUnorderedCompare() argument
6090 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinUnorderedCompare()
6093 ExprResult OrigArg0 = TheCall->getArg(0); in SemaBuiltinUnorderedCompare()
6094 ExprResult OrigArg1 = TheCall->getArg(1); in SemaBuiltinUnorderedCompare()
6099 OrigArg0, OrigArg1, TheCall->getExprLoc(), ACK_Comparison); in SemaBuiltinUnorderedCompare()
6106 TheCall->setArg(0, OrigArg0.get()); in SemaBuiltinUnorderedCompare()
6107 TheCall->setArg(1, OrigArg1.get()); in SemaBuiltinUnorderedCompare()
6128 bool Sema::SemaBuiltinFPClassification(CallExpr *TheCall, unsigned NumArgs) { in SemaBuiltinFPClassification() argument
6129 if (checkArgCount(*this, TheCall, NumArgs)) in SemaBuiltinFPClassification()
6135 Expr *Arg = TheCall->getArg(i); in SemaBuiltinFPClassification()
6144 TheCall->setArg(i, Res.get()); in SemaBuiltinFPClassification()
6147 Expr *OrigArg = TheCall->getArg(NumArgs-1); in SemaBuiltinFPClassification()
6159 TheCall->setArg(NumArgs - 1, OrigArg); in SemaBuiltinFPClassification()
6171 bool Sema::SemaBuiltinComplex(CallExpr *TheCall) { in SemaBuiltinComplex() argument
6172 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinComplex()
6177 Expr *Arg = TheCall->getArg(I); in SemaBuiltinComplex()
6194 TheCall->setArg(I, Converted.get()); in SemaBuiltinComplex()
6198 TheCall->setType(Context.DependentTy); in SemaBuiltinComplex()
6202 Expr *Real = TheCall->getArg(0); in SemaBuiltinComplex()
6203 Expr *Imag = TheCall->getArg(1); in SemaBuiltinComplex()
6215 return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) in SemaBuiltinComplex()
6218 return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) in SemaBuiltinComplex()
6221 TheCall->setType(Context.getComplexType(Real->getType())); in SemaBuiltinComplex()
6232 bool Sema::SemaBuiltinVSX(CallExpr *TheCall) { in SemaBuiltinVSX() argument
6234 if (checkArgCount(*this, TheCall, ExpectedNumArgs)) in SemaBuiltinVSX()
6238 if (!TheCall->getArg(2)->isIntegerConstantExpr(Context)) in SemaBuiltinVSX()
6239 return Diag(TheCall->getBeginLoc(), in SemaBuiltinVSX()
6241 << 3 /* argument index */ << TheCall->getDirectCallee() in SemaBuiltinVSX()
6242 << SourceRange(TheCall->getArg(2)->getBeginLoc(), in SemaBuiltinVSX()
6243 TheCall->getArg(2)->getEndLoc()); in SemaBuiltinVSX()
6245 QualType Arg1Ty = TheCall->getArg(0)->getType(); in SemaBuiltinVSX()
6246 QualType Arg2Ty = TheCall->getArg(1)->getType(); in SemaBuiltinVSX()
6249 SourceLocation BuiltinLoc = TheCall->getBeginLoc(); in SemaBuiltinVSX()
6253 << TheCall->getDirectCallee() in SemaBuiltinVSX()
6254 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinVSX()
6255 TheCall->getArg(1)->getEndLoc()); in SemaBuiltinVSX()
6261 << TheCall->getDirectCallee() in SemaBuiltinVSX()
6262 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinVSX()
6263 TheCall->getArg(1)->getEndLoc()); in SemaBuiltinVSX()
6269 TheCall->setType(Arg1Ty); in SemaBuiltinVSX()
6276 ExprResult Sema::SemaBuiltinShuffleVector(CallExpr *TheCall) { in SemaBuiltinShuffleVector() argument
6277 if (TheCall->getNumArgs() < 2) in SemaBuiltinShuffleVector()
6278 return ExprError(Diag(TheCall->getEndLoc(), in SemaBuiltinShuffleVector()
6280 << 0 /*function call*/ << 2 << TheCall->getNumArgs() in SemaBuiltinShuffleVector()
6281 << TheCall->getSourceRange()); in SemaBuiltinShuffleVector()
6286 QualType resType = TheCall->getArg(0)->getType(); in SemaBuiltinShuffleVector()
6289 if (!TheCall->getArg(0)->isTypeDependent() && in SemaBuiltinShuffleVector()
6290 !TheCall->getArg(1)->isTypeDependent()) { in SemaBuiltinShuffleVector()
6291 QualType LHSType = TheCall->getArg(0)->getType(); in SemaBuiltinShuffleVector()
6292 QualType RHSType = TheCall->getArg(1)->getType(); in SemaBuiltinShuffleVector()
6296 Diag(TheCall->getBeginLoc(), diag::err_vec_builtin_non_vector) in SemaBuiltinShuffleVector()
6297 << TheCall->getDirectCallee() in SemaBuiltinShuffleVector()
6298 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinShuffleVector()
6299 TheCall->getArg(1)->getEndLoc())); in SemaBuiltinShuffleVector()
6302 unsigned numResElements = TheCall->getNumArgs() - 2; in SemaBuiltinShuffleVector()
6307 if (TheCall->getNumArgs() == 2) { in SemaBuiltinShuffleVector()
6310 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
6312 << TheCall->getDirectCallee() in SemaBuiltinShuffleVector()
6313 << SourceRange(TheCall->getArg(1)->getBeginLoc(), in SemaBuiltinShuffleVector()
6314 TheCall->getArg(1)->getEndLoc())); in SemaBuiltinShuffleVector()
6316 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
6318 << TheCall->getDirectCallee() in SemaBuiltinShuffleVector()
6319 << SourceRange(TheCall->getArg(0)->getBeginLoc(), in SemaBuiltinShuffleVector()
6320 TheCall->getArg(1)->getEndLoc())); in SemaBuiltinShuffleVector()
6328 for (unsigned i = 2; i < TheCall->getNumArgs(); i++) { in SemaBuiltinShuffleVector()
6329 if (TheCall->getArg(i)->isTypeDependent() || in SemaBuiltinShuffleVector()
6330 TheCall->getArg(i)->isValueDependent()) in SemaBuiltinShuffleVector()
6334 if (!(Result = TheCall->getArg(i)->getIntegerConstantExpr(Context))) in SemaBuiltinShuffleVector()
6335 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
6337 << TheCall->getArg(i)->getSourceRange()); in SemaBuiltinShuffleVector()
6345 return ExprError(Diag(TheCall->getBeginLoc(), in SemaBuiltinShuffleVector()
6347 << TheCall->getArg(i)->getSourceRange()); in SemaBuiltinShuffleVector()
6352 for (unsigned i = 0, e = TheCall->getNumArgs(); i != e; i++) { in SemaBuiltinShuffleVector()
6353 exprs.push_back(TheCall->getArg(i)); in SemaBuiltinShuffleVector()
6354 TheCall->setArg(i, nullptr); in SemaBuiltinShuffleVector()
6358 TheCall->getCallee()->getBeginLoc(), in SemaBuiltinShuffleVector()
6359 TheCall->getRParenLoc()); in SemaBuiltinShuffleVector()
6395 bool Sema::SemaBuiltinPrefetch(CallExpr *TheCall) { in SemaBuiltinPrefetch() argument
6396 unsigned NumArgs = TheCall->getNumArgs(); in SemaBuiltinPrefetch()
6399 return Diag(TheCall->getEndLoc(), in SemaBuiltinPrefetch()
6401 << 0 /*function call*/ << 3 << NumArgs << TheCall->getSourceRange(); in SemaBuiltinPrefetch()
6406 if (SemaBuiltinConstantArgRange(TheCall, i, 0, i == 1 ? 1 : 3)) in SemaBuiltinPrefetch()
6415 bool Sema::SemaBuiltinAssume(CallExpr *TheCall) { in SemaBuiltinAssume() argument
6416 Expr *Arg = TheCall->getArg(0); in SemaBuiltinAssume()
6422 << cast<FunctionDecl>(TheCall->getCalleeDecl())->getIdentifier(); in SemaBuiltinAssume()
6430 bool Sema::SemaBuiltinAllocaWithAlign(CallExpr *TheCall) { in SemaBuiltinAllocaWithAlign() argument
6432 Expr *Arg = TheCall->getArg(1); in SemaBuiltinAllocaWithAlign()
6440 Diag(TheCall->getBeginLoc(), diag::warn_alloca_align_alignof) in SemaBuiltinAllocaWithAlign()
6446 return Diag(TheCall->getBeginLoc(), diag::err_alignment_not_power_of_two) in SemaBuiltinAllocaWithAlign()
6450 return Diag(TheCall->getBeginLoc(), diag::err_alignment_too_small) in SemaBuiltinAllocaWithAlign()
6454 return Diag(TheCall->getBeginLoc(), diag::err_alignment_too_big) in SemaBuiltinAllocaWithAlign()
6463 bool Sema::SemaBuiltinAssumeAligned(CallExpr *TheCall) { in SemaBuiltinAssumeAligned() argument
6464 unsigned NumArgs = TheCall->getNumArgs(); in SemaBuiltinAssumeAligned()
6467 return Diag(TheCall->getEndLoc(), in SemaBuiltinAssumeAligned()
6469 << 0 /*function call*/ << 3 << NumArgs << TheCall->getSourceRange(); in SemaBuiltinAssumeAligned()
6472 Expr *Arg = TheCall->getArg(1); in SemaBuiltinAssumeAligned()
6477 if (SemaBuiltinConstantArg(TheCall, 1, Result)) in SemaBuiltinAssumeAligned()
6481 return Diag(TheCall->getBeginLoc(), diag::err_alignment_not_power_of_two) in SemaBuiltinAssumeAligned()
6485 Diag(TheCall->getBeginLoc(), diag::warn_assume_aligned_too_great) in SemaBuiltinAssumeAligned()
6490 ExprResult Arg(TheCall->getArg(2)); in SemaBuiltinAssumeAligned()
6495 TheCall->setArg(2, Arg.get()); in SemaBuiltinAssumeAligned()
6501 bool Sema::SemaBuiltinOSLogFormat(CallExpr *TheCall) { in SemaBuiltinOSLogFormat() argument
6503 cast<FunctionDecl>(TheCall->getCalleeDecl())->getBuiltinID(); in SemaBuiltinOSLogFormat()
6506 unsigned NumArgs = TheCall->getNumArgs(); in SemaBuiltinOSLogFormat()
6509 return Diag(TheCall->getEndLoc(), diag::err_typecheck_call_too_few_args) in SemaBuiltinOSLogFormat()
6511 << TheCall->getSourceRange(); in SemaBuiltinOSLogFormat()
6514 return Diag(TheCall->getEndLoc(), in SemaBuiltinOSLogFormat()
6517 << TheCall->getSourceRange(); in SemaBuiltinOSLogFormat()
6523 ExprResult Arg(TheCall->getArg(i)); in SemaBuiltinOSLogFormat()
6529 TheCall->setArg(i, Arg.get()); in SemaBuiltinOSLogFormat()
6536 ExprResult Arg = CheckOSLogFormatStringArg(TheCall->getArg(i)); in SemaBuiltinOSLogFormat()
6539 TheCall->setArg(i, Arg.get()); in SemaBuiltinOSLogFormat()
6547 TheCall->getArg(i), VariadicFunction, nullptr); in SemaBuiltinOSLogFormat()
6554 << TheCall->getSourceRange(); in SemaBuiltinOSLogFormat()
6556 TheCall->setArg(i, Arg.get()); in SemaBuiltinOSLogFormat()
6564 ArrayRef<const Expr *> Args(TheCall->getArgs(), TheCall->getNumArgs()); in SemaBuiltinOSLogFormat()
6567 VariadicFunction, TheCall->getBeginLoc(), SourceRange(), in SemaBuiltinOSLogFormat()
6574 TheCall->setType(Context.getSizeType()); in SemaBuiltinOSLogFormat()
6576 TheCall->setType(Context.VoidPtrTy); in SemaBuiltinOSLogFormat()
6583 bool Sema::SemaBuiltinConstantArg(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArg() argument
6585 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArg()
6586 DeclRefExpr *DRE =cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts()); in SemaBuiltinConstantArg()
6593 return Diag(TheCall->getBeginLoc(), diag::err_constant_integer_arg_type) in SemaBuiltinConstantArg()
6601 bool Sema::SemaBuiltinConstantArgRange(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArgRange() argument
6608 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgRange()
6613 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgRange()
6618 return Diag(TheCall->getBeginLoc(), diag::err_argument_invalid_range) in SemaBuiltinConstantArgRange()
6623 DiagRuntimeBehavior(TheCall->getBeginLoc(), TheCall, in SemaBuiltinConstantArgRange()
6634 bool Sema::SemaBuiltinConstantArgMultiple(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArgMultiple() argument
6639 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgMultiple()
6644 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgMultiple()
6648 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_multiple) in SemaBuiltinConstantArgMultiple()
6656 bool Sema::SemaBuiltinConstantArgPower2(CallExpr *TheCall, int ArgNum) { in SemaBuiltinConstantArgPower2() argument
6660 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgPower2()
6665 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgPower2()
6673 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_power_of_2) in SemaBuiltinConstantArgPower2()
6702 bool Sema::SemaBuiltinConstantArgShiftedByte(CallExpr *TheCall, int ArgNum, in SemaBuiltinConstantArgShiftedByte() argument
6707 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgShiftedByte()
6712 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgShiftedByte()
6722 return Diag(TheCall->getBeginLoc(), diag::err_argument_not_shifted_byte) in SemaBuiltinConstantArgShiftedByte()
6731 bool Sema::SemaBuiltinConstantArgShiftedByteOrXXFF(CallExpr *TheCall, in SemaBuiltinConstantArgShiftedByteOrXXFF() argument
6737 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinConstantArgShiftedByteOrXXFF()
6742 if (SemaBuiltinConstantArg(TheCall, ArgNum, Result)) in SemaBuiltinConstantArgShiftedByteOrXXFF()
6754 return Diag(TheCall->getBeginLoc(), in SemaBuiltinConstantArgShiftedByteOrXXFF()
6760 bool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) { in SemaBuiltinARMMemoryTaggingCall() argument
6762 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinARMMemoryTaggingCall()
6764 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
6765 Expr *Arg1 = TheCall->getArg(1); in SemaBuiltinARMMemoryTaggingCall()
6772 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
6774 TheCall->setArg(0, FirstArg.get()); in SemaBuiltinARMMemoryTaggingCall()
6781 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) in SemaBuiltinARMMemoryTaggingCall()
6785 TheCall->setType(FirstArgType); in SemaBuiltinARMMemoryTaggingCall()
6790 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinARMMemoryTaggingCall()
6793 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
6799 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
6801 TheCall->setArg(0, FirstArg.get()); in SemaBuiltinARMMemoryTaggingCall()
6804 TheCall->setType(FirstArgType); in SemaBuiltinARMMemoryTaggingCall()
6807 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in SemaBuiltinARMMemoryTaggingCall()
6811 if (checkArgCount(*this, TheCall, 2)) in SemaBuiltinARMMemoryTaggingCall()
6813 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
6814 Expr *Arg1 = TheCall->getArg(1); in SemaBuiltinARMMemoryTaggingCall()
6821 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
6826 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) in SemaBuiltinARMMemoryTaggingCall()
6828 TheCall->setType(Context.IntTy); in SemaBuiltinARMMemoryTaggingCall()
6834 if (checkArgCount(*this, TheCall, 1)) in SemaBuiltinARMMemoryTaggingCall()
6836 Expr *Arg0 = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
6843 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) in SemaBuiltinARMMemoryTaggingCall()
6845 TheCall->setArg(0, FirstArg.get()); in SemaBuiltinARMMemoryTaggingCall()
6849 TheCall->setType(FirstArgType); in SemaBuiltinARMMemoryTaggingCall()
6854 Expr *ArgA = TheCall->getArg(0); in SemaBuiltinARMMemoryTaggingCall()
6855 Expr *ArgB = TheCall->getArg(1); in SemaBuiltinARMMemoryTaggingCall()
6872 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) in SemaBuiltinARMMemoryTaggingCall()
6876 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) in SemaBuiltinARMMemoryTaggingCall()
6887 return Diag(TheCall->getBeginLoc(), diag::err_typecheck_sub_ptr_compatible) in SemaBuiltinARMMemoryTaggingCall()
6895 return Diag(TheCall->getBeginLoc(), diag::err_memtag_any2arg_pointer) in SemaBuiltinARMMemoryTaggingCall()
6904 TheCall->setArg(0, ArgExprA.get()); in SemaBuiltinARMMemoryTaggingCall()
6905 TheCall->setArg(1, ArgExprB.get()); in SemaBuiltinARMMemoryTaggingCall()
6906 TheCall->setType(Context.LongLongTy); in SemaBuiltinARMMemoryTaggingCall()
6915 bool Sema::SemaBuiltinARMSpecialReg(unsigned BuiltinID, CallExpr *TheCall, in SemaBuiltinARMSpecialReg() argument
6933 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinARMSpecialReg()
6939 return Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal) in SemaBuiltinARMSpecialReg()
6948 return Diag(TheCall->getBeginLoc(), diag::err_arm_invalid_specialreg) in SemaBuiltinARMSpecialReg()
6990 return Diag(TheCall->getBeginLoc(), diag::err_arm_invalid_specialreg) in SemaBuiltinARMSpecialReg()
6999 if (TheCall->getNumArgs() != 2) in SemaBuiltinARMSpecialReg()
7007 return SemaBuiltinConstantArgRange(TheCall, 1, 0, 15); in SemaBuiltinARMSpecialReg()
7017 bool Sema::SemaBuiltinPPCMMACall(CallExpr *TheCall, const char *TypeStr) { in SemaBuiltinPPCMMACall() argument
7028 TheCall->setType(type); in SemaBuiltinPPCMMACall()
7033 if (ArgNum >= TheCall->getNumArgs()) { in SemaBuiltinPPCMMACall()
7038 Expr *Arg = TheCall->getArg(ArgNum); in SemaBuiltinPPCMMACall()
7051 SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, Mask, true)) in SemaBuiltinPPCMMACall()
7065 if (checkArgCount(*this, TheCall, ArgNum)) in SemaBuiltinPPCMMACall()
7074 bool Sema::SemaBuiltinLongjmp(CallExpr *TheCall) { in SemaBuiltinLongjmp() argument
7076 return Diag(TheCall->getBeginLoc(), diag::err_builtin_longjmp_unsupported) in SemaBuiltinLongjmp()
7077 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in SemaBuiltinLongjmp()
7079 Expr *Arg = TheCall->getArg(1); in SemaBuiltinLongjmp()
7083 if (SemaBuiltinConstantArg(TheCall, 1, Result)) in SemaBuiltinLongjmp()
7087 return Diag(TheCall->getBeginLoc(), diag::err_builtin_longjmp_invalid_val) in SemaBuiltinLongjmp()
7095 bool Sema::SemaBuiltinSetjmp(CallExpr *TheCall) { in SemaBuiltinSetjmp() argument
7097 return Diag(TheCall->getBeginLoc(), diag::err_builtin_setjmp_unsupported) in SemaBuiltinSetjmp()
7098 << SourceRange(TheCall->getBeginLoc(), TheCall->getEndLoc()); in SemaBuiltinSetjmp()
12001 static void CheckImplicitArgumentConversions(Sema &S, CallExpr *TheCall, in CheckImplicitArgumentConversions() argument
12003 unsigned NumArgs = TheCall->getNumArgs(); in CheckImplicitArgumentConversions()
12005 Expr *CurrA = TheCall->getArg(i); in CheckImplicitArgumentConversions()
12010 IsImplicitBoolFloatConversion(S, TheCall->getArg(i - 1), false)); in CheckImplicitArgumentConversions()
12012 IsImplicitBoolFloatConversion(S, TheCall->getArg(i + 1), false)); in CheckImplicitArgumentConversions()
16070 ExprResult Sema::SemaBuiltinMatrixTranspose(CallExpr *TheCall, in SemaBuiltinMatrixTranspose() argument
16072 if (checkArgCount(*this, TheCall, 1)) in SemaBuiltinMatrixTranspose()
16075 ExprResult MatrixArg = DefaultLvalueConversion(TheCall->getArg(0)); in SemaBuiltinMatrixTranspose()
16092 TheCall->setType(ResultType); in SemaBuiltinMatrixTranspose()
16095 TheCall->setArg(0, Matrix); in SemaBuiltinMatrixTranspose()
16119 ExprResult Sema::SemaBuiltinMatrixColumnMajorLoad(CallExpr *TheCall, in SemaBuiltinMatrixColumnMajorLoad() argument
16122 Diag(TheCall->getBeginLoc(), diag::err_builtin_matrix_disabled); in SemaBuiltinMatrixColumnMajorLoad()
16126 if (checkArgCount(*this, TheCall, 4)) in SemaBuiltinMatrixColumnMajorLoad()
16130 Expr *PtrExpr = TheCall->getArg(PtrArgIdx); in SemaBuiltinMatrixColumnMajorLoad()
16131 Expr *RowsExpr = TheCall->getArg(1); in SemaBuiltinMatrixColumnMajorLoad()
16132 Expr *ColumnsExpr = TheCall->getArg(2); in SemaBuiltinMatrixColumnMajorLoad()
16133 Expr *StrideExpr = TheCall->getArg(3); in SemaBuiltinMatrixColumnMajorLoad()
16143 TheCall->setArg(0, PtrExpr); in SemaBuiltinMatrixColumnMajorLoad()
16145 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorLoad()
16146 return TheCall; in SemaBuiltinMatrixColumnMajorLoad()
16179 TheCall->setArg(1, RowsExpr); in SemaBuiltinMatrixColumnMajorLoad()
16186 TheCall->setArg(2, ColumnsExpr); in SemaBuiltinMatrixColumnMajorLoad()
16194 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorLoad()
16212 TheCall->setArg(3, StrideExpr); in SemaBuiltinMatrixColumnMajorLoad()
16229 TheCall->setType( in SemaBuiltinMatrixColumnMajorLoad()
16234 ExprResult Sema::SemaBuiltinMatrixColumnMajorStore(CallExpr *TheCall, in SemaBuiltinMatrixColumnMajorStore() argument
16236 if (checkArgCount(*this, TheCall, 3)) in SemaBuiltinMatrixColumnMajorStore()
16240 Expr *MatrixExpr = TheCall->getArg(0); in SemaBuiltinMatrixColumnMajorStore()
16241 Expr *PtrExpr = TheCall->getArg(PtrArgIdx); in SemaBuiltinMatrixColumnMajorStore()
16242 Expr *StrideExpr = TheCall->getArg(2); in SemaBuiltinMatrixColumnMajorStore()
16251 TheCall->setArg(0, MatrixExpr); in SemaBuiltinMatrixColumnMajorStore()
16254 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorStore()
16255 return TheCall; in SemaBuiltinMatrixColumnMajorStore()
16269 TheCall->setArg(1, PtrExpr); in SemaBuiltinMatrixColumnMajorStore()
16271 TheCall->setType(Context.DependentTy); in SemaBuiltinMatrixColumnMajorStore()
16272 return TheCall; in SemaBuiltinMatrixColumnMajorStore()
16309 TheCall->setArg(2, StrideExpr); in SemaBuiltinMatrixColumnMajorStore()
16335 void Sema::CheckTCBEnforcement(const CallExpr *TheCall, in CheckTCBEnforcement() argument
16359 this->Diag(TheCall->getExprLoc(), in CheckTCBEnforcement()