Lines Matching defs:TheCall

27                                           CallExpr *TheCall) {
31 if (SemaRef.checkArgCount(TheCall, 2))
33 Expr *Arg0 = TheCall->getArg(0);
34 Expr *Arg1 = TheCall->getArg(1);
41 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer)
43 TheCall->setArg(0, FirstArg.get());
50 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer)
54 TheCall->setType(FirstArgType);
59 if (SemaRef.checkArgCount(TheCall, 2))
62 Expr *Arg0 = TheCall->getArg(0);
68 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer)
70 TheCall->setArg(0, FirstArg.get());
73 TheCall->setType(FirstArgType);
76 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 15);
80 if (SemaRef.checkArgCount(TheCall, 2))
82 Expr *Arg0 = TheCall->getArg(0);
83 Expr *Arg1 = TheCall->getArg(1);
90 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer)
95 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer)
97 TheCall->setType(Context.IntTy);
103 if (SemaRef.checkArgCount(TheCall, 1))
105 Expr *Arg0 = TheCall->getArg(0);
112 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer)
114 TheCall->setArg(0, FirstArg.get());
118 TheCall->setType(FirstArgType);
123 Expr *ArgA = TheCall->getArg(0);
124 Expr *ArgB = TheCall->getArg(1);
142 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer)
146 return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer)
157 return Diag(TheCall->getBeginLoc(),
166 return Diag(TheCall->getBeginLoc(), diag::err_memtag_any2arg_pointer)
177 TheCall->setArg(0, ArgExprA.get());
178 TheCall->setArg(1, ArgExprB.get());
179 TheCall->setType(Context.LongLongTy);
187 /// TheCall is an ARM/AArch64 special register string literal.
188 bool SemaARM::BuiltinARMSpecialReg(unsigned BuiltinID, CallExpr *TheCall,
208 Expr *Arg = TheCall->getArg(ArgNum);
214 return Diag(TheCall->getBeginLoc(), diag::err_expr_not_string_literal)
223 return Diag(TheCall->getBeginLoc(), diag::err_arm_invalid_specialreg)
265 return Diag(TheCall->getBeginLoc(), diag::err_arm_invalid_specialreg)
271 if (TheCall->getNumArgs() != 2)
312 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, *MaxLimit);
375 bool SemaARM::CheckImmediateArg(CallExpr *TheCall, unsigned CheckTy,
383 Expr *Arg = TheCall->getArg(ArgIdx);
389 if (SemaRef.BuiltinConstantArg(TheCall, ArgIdx, Imm))
393 return Diag(TheCall->getBeginLoc(), ErrDiag) << Arg->getSourceRange();
399 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 31))
403 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 13))
407 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 63))
411 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, 16))
415 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 7))
419 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, 1))
423 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, 3))
427 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, 7))
431 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0,
437 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, EltBitWidth))
441 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, EltBitWidth / 2))
445 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, EltBitWidth - 1))
449 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0,
455 TheCall, ArgIdx, 0, (ContainerBitWidth / (2 * EltBitWidth)) - 1))
460 TheCall, ArgIdx, 0, (ContainerBitWidth / (4 * EltBitWidth)) - 1))
473 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 1))
477 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 2))
481 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 3))
485 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 0))
489 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 15))
493 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0, 255))
497 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, 32))
501 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 1, 64))
505 if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 2, 4) ||
506 SemaRef.BuiltinConstantArgMultiple(TheCall, ArgIdx, 2))
514 CallExpr *TheCall,
525 HasError |= CheckImmediateArg(TheCall, CheckTy, ArgIdx, ElementBitWidth,
533 CallExpr *TheCall, SmallVectorImpl<std::tuple<int, int, int>> &ImmChecks) {
539 CheckImmediateArg(TheCall, CheckTy, ArgIdx, ElementBitWidth, 128);
561 static bool checkArmStreamingBuiltin(Sema &S, CallExpr *TheCall,
615 S.Diag(TheCall->getBeginLoc(), diag::err_attribute_arm_sm_incompat_builtin)
616 << TheCall->getSourceRange() << "non-streaming";
619 S.Diag(TheCall->getBeginLoc(), diag::err_attribute_arm_sm_incompat_builtin)
620 << TheCall->getSourceRange() << "streaming";
638 CallExpr *TheCall) {
649 checkArmStreamingBuiltin(SemaRef, TheCall, FD, *BuiltinType, BuiltinID))
653 Diag(TheCall->getBeginLoc(),
655 << TheCall->getSourceRange();
658 Diag(TheCall->getBeginLoc(),
660 << TheCall->getSourceRange();
674 return PerformSVEImmChecks(TheCall, ImmChecks);
678 CallExpr *TheCall) {
688 checkArmStreamingBuiltin(SemaRef, TheCall, FD, *BuiltinType, BuiltinID))
702 return PerformSVEImmChecks(TheCall, ImmChecks);
707 CallExpr *TheCall) {
717 if (checkArmStreamingBuiltin(SemaRef, TheCall, FD, ArmNonStreaming,
741 unsigned ImmArg = TheCall->getNumArgs() - 1;
743 if (SemaRef.BuiltinConstantArg(TheCall, ImmArg, Result))
748 return Diag(TheCall->getBeginLoc(), diag::err_invalid_neon_type_code)
749 << TheCall->getArg(ImmArg)->getSourceRange();
754 Expr *Arg = TheCall->getArg(PtrArgNum);
792 return PerformNeonImmChecks(TheCall, ImmChecks, TV);
796 CallExpr *TheCall) {
806 CallExpr *TheCall) {
817 return CheckARMCoprocessorImmediate(TI, TheCall->getArg(0), /*WantCDE*/ true);
846 CallExpr *TheCall,
864 cast<DeclRefExpr>(TheCall->getCallee()->IgnoreParenCasts());
867 if (SemaRef.checkArgCount(TheCall, IsLdrex ? 1 : 2))
874 Expr *PointerArg = TheCall->getArg(IsLdrex ? 0 : 1);
912 TheCall->setArg(IsLdrex ? 0 : 1, PointerArg);
945 TheCall->setType(ValType);
950 ExprResult ValArg = TheCall->getArg(0);
956 TheCall->setArg(0, ValArg.get());
960 TheCall->setType(Context.IntTy);
966 CallExpr *TheCall) {
971 return CheckARMBuiltinExclusiveCall(BuiltinID, TheCall, 64);
975 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 1) ||
976 SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 1);
981 return BuiltinARMSpecialReg(BuiltinID, TheCall, 0, 3, false);
987 return BuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true);
989 if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall))
991 if (CheckMVEBuiltinFunctionCall(BuiltinID, TheCall))
993 if (CheckCDEBuiltinFunctionCall(TI, BuiltinID, TheCall))
1003 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 1, 32);
1005 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31);
1007 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 1, 16);
1009 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 15);
1012 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 1);
1017 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15);
1036 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15) ||
1037 CheckARMCoprocessorImmediate(TI, TheCall->getArg(0),
1044 CallExpr *TheCall) {
1049 return CheckARMBuiltinExclusiveCall(BuiltinID, TheCall, 128);
1053 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 1) ||
1054 SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 3) ||
1055 SemaRef.BuiltinConstantArgRange(TheCall, 3, 0, 1) ||
1056 SemaRef.BuiltinConstantArgRange(TheCall, 4, 0, 1);
1063 return BuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true);
1072 return BuiltinARMMemoryTaggingCall(BuiltinID, TheCall);
1079 return BuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true);
1086 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 0x7fff);
1089 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 31);
1092 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 0xffff);
1095 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 0xffff);
1097 if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall))
1100 if (CheckSVEBuiltinFunctionCall(BuiltinID, TheCall))
1103 if (CheckSMEBuiltinFunctionCall(BuiltinID, TheCall))
1117 return SemaRef.BuiltinConstantArgRange(TheCall, i, l, u + l);