Lines Matching refs:Data
86 static void handleTypeMismatchImpl(TypeMismatchData *Data, ValueHandle Pointer, in handleTypeMismatchImpl() argument
88 Location Loc = Data->Loc.acquire(); in handleTypeMismatchImpl()
90 uptr Alignment = (uptr)1 << Data->LogAlignment; in handleTypeMismatchImpl()
93 ET = (Data->TypeCheckKind == TCK_NonnullAssign) in handleTypeMismatchImpl()
107 if (Data->Loc.isInvalid()) { in handleTypeMismatchImpl()
118 << TypeCheckKinds[Data->TypeCheckKind] << Data->Type; in handleTypeMismatchImpl()
123 << TypeCheckKinds[Data->TypeCheckKind] << (void *)Pointer << Alignment in handleTypeMismatchImpl()
124 << Data->Type; in handleTypeMismatchImpl()
129 << TypeCheckKinds[Data->TypeCheckKind] << (void *)Pointer << Data->Type; in handleTypeMismatchImpl()
139 void __ubsan::__ubsan_handle_type_mismatch_v1(TypeMismatchData *Data, in __ubsan_handle_type_mismatch_v1() argument
142 handleTypeMismatchImpl(Data, Pointer, Opts); in __ubsan_handle_type_mismatch_v1()
144 void __ubsan::__ubsan_handle_type_mismatch_v1_abort(TypeMismatchData *Data, in __ubsan_handle_type_mismatch_v1_abort() argument
147 handleTypeMismatchImpl(Data, Pointer, Opts); in __ubsan_handle_type_mismatch_v1_abort()
151 static void handleAlignmentAssumptionImpl(AlignmentAssumptionData *Data, in handleAlignmentAssumptionImpl() argument
156 Location Loc = Data->Loc.acquire(); in handleAlignmentAssumptionImpl()
157 SourceLocation AssumptionLoc = Data->AssumptionLoc.acquire(); in handleAlignmentAssumptionImpl()
176 << Alignment << Data->Type; in handleAlignmentAssumptionImpl()
181 << Alignment << Offset << Data->Type; in handleAlignmentAssumptionImpl()
192 void __ubsan::__ubsan_handle_alignment_assumption(AlignmentAssumptionData *Data, in __ubsan_handle_alignment_assumption() argument
197 handleAlignmentAssumptionImpl(Data, Pointer, Alignment, Offset, Opts); in __ubsan_handle_alignment_assumption()
200 AlignmentAssumptionData *Data, ValueHandle Pointer, ValueHandle Alignment, in __ubsan_handle_alignment_assumption_abort() argument
203 handleAlignmentAssumptionImpl(Data, Pointer, Alignment, Offset, Opts); in __ubsan_handle_alignment_assumption_abort()
209 static void handleIntegerOverflowImpl(OverflowData *Data, ValueHandle LHS, in handleIntegerOverflowImpl() argument
212 SourceLocation Loc = Data->Loc.acquire(); in handleIntegerOverflowImpl()
213 bool IsSigned = Data->Type.isSignedIntegerTy(); in handleIntegerOverflowImpl()
229 << (IsSigned ? "signed" : "unsigned") << Value(Data->Type, LHS) in handleIntegerOverflowImpl()
230 << Operator << RHS << Data->Type; in handleIntegerOverflowImpl()
234 void __ubsan::handler_name(OverflowData *Data, ValueHandle LHS, \
237 handleIntegerOverflowImpl(Data, LHS, op, Value(Data->Type, RHS), Opts); \
249 static void handleNegateOverflowImpl(OverflowData *Data, ValueHandle OldVal, in handleNegateOverflowImpl() argument
251 SourceLocation Loc = Data->Loc.acquire(); in handleNegateOverflowImpl()
252 bool IsSigned = Data->Type.isSignedIntegerTy(); in handleNegateOverflowImpl()
268 << Value(Data->Type, OldVal) << Data->Type; in handleNegateOverflowImpl()
271 << Value(Data->Type, OldVal) << Data->Type; in handleNegateOverflowImpl()
274 void __ubsan::__ubsan_handle_negate_overflow(OverflowData *Data, in __ubsan_handle_negate_overflow() argument
277 handleNegateOverflowImpl(Data, OldVal, Opts); in __ubsan_handle_negate_overflow()
279 void __ubsan::__ubsan_handle_negate_overflow_abort(OverflowData *Data, in __ubsan_handle_negate_overflow_abort() argument
282 handleNegateOverflowImpl(Data, OldVal, Opts); in __ubsan_handle_negate_overflow_abort()
286 static void handleDivremOverflowImpl(OverflowData *Data, ValueHandle LHS, in handleDivremOverflowImpl() argument
288 SourceLocation Loc = Data->Loc.acquire(); in handleDivremOverflowImpl()
289 Value LHSVal(Data->Type, LHS); in handleDivremOverflowImpl()
290 Value RHSVal(Data->Type, RHS); in handleDivremOverflowImpl()
295 else if (Data->Type.isIntegerTy()) in handleDivremOverflowImpl()
309 << LHSVal << Data->Type; in handleDivremOverflowImpl()
317 void __ubsan::__ubsan_handle_divrem_overflow(OverflowData *Data, in __ubsan_handle_divrem_overflow() argument
320 handleDivremOverflowImpl(Data, LHS, RHS, Opts); in __ubsan_handle_divrem_overflow()
322 void __ubsan::__ubsan_handle_divrem_overflow_abort(OverflowData *Data, in __ubsan_handle_divrem_overflow_abort() argument
326 handleDivremOverflowImpl(Data, LHS, RHS, Opts); in __ubsan_handle_divrem_overflow_abort()
330 static void handleShiftOutOfBoundsImpl(ShiftOutOfBoundsData *Data, in handleShiftOutOfBoundsImpl() argument
333 SourceLocation Loc = Data->Loc.acquire(); in handleShiftOutOfBoundsImpl()
334 Value LHSVal(Data->LHSType, LHS); in handleShiftOutOfBoundsImpl()
335 Value RHSVal(Data->RHSType, RHS); in handleShiftOutOfBoundsImpl()
339 RHSVal.getPositiveIntValue() >= Data->LHSType.getIntegerBitWidth()) in handleShiftOutOfBoundsImpl()
355 << RHSVal << Data->LHSType.getIntegerBitWidth() << Data->LHSType; in handleShiftOutOfBoundsImpl()
362 << LHSVal << RHSVal << Data->LHSType; in handleShiftOutOfBoundsImpl()
366 void __ubsan::__ubsan_handle_shift_out_of_bounds(ShiftOutOfBoundsData *Data, in __ubsan_handle_shift_out_of_bounds() argument
370 handleShiftOutOfBoundsImpl(Data, LHS, RHS, Opts); in __ubsan_handle_shift_out_of_bounds()
373 ShiftOutOfBoundsData *Data, in __ubsan_handle_shift_out_of_bounds_abort() argument
377 handleShiftOutOfBoundsImpl(Data, LHS, RHS, Opts); in __ubsan_handle_shift_out_of_bounds_abort()
381 static void handleOutOfBoundsImpl(OutOfBoundsData *Data, ValueHandle Index, in handleOutOfBoundsImpl() argument
383 SourceLocation Loc = Data->Loc.acquire(); in handleOutOfBoundsImpl()
391 Value IndexVal(Data->IndexType, Index); in handleOutOfBoundsImpl()
393 << IndexVal << Data->ArrayType; in handleOutOfBoundsImpl()
396 void __ubsan::__ubsan_handle_out_of_bounds(OutOfBoundsData *Data, in __ubsan_handle_out_of_bounds() argument
399 handleOutOfBoundsImpl(Data, Index, Opts); in __ubsan_handle_out_of_bounds()
401 void __ubsan::__ubsan_handle_out_of_bounds_abort(OutOfBoundsData *Data, in __ubsan_handle_out_of_bounds_abort() argument
404 handleOutOfBoundsImpl(Data, Index, Opts); in __ubsan_handle_out_of_bounds_abort()
408 static void handleBuiltinUnreachableImpl(UnreachableData *Data, in handleBuiltinUnreachableImpl() argument
411 ScopedReport R(Opts, Data->Loc, ET); in handleBuiltinUnreachableImpl()
412 Diag(Data->Loc, DL_Error, ET, in handleBuiltinUnreachableImpl()
416 void __ubsan::__ubsan_handle_builtin_unreachable(UnreachableData *Data) { in __ubsan_handle_builtin_unreachable() argument
418 handleBuiltinUnreachableImpl(Data, Opts); in __ubsan_handle_builtin_unreachable()
422 static void handleMissingReturnImpl(UnreachableData *Data, ReportOptions Opts) { in handleMissingReturnImpl() argument
424 ScopedReport R(Opts, Data->Loc, ET); in handleMissingReturnImpl()
425 Diag(Data->Loc, DL_Error, ET, in handleMissingReturnImpl()
430 void __ubsan::__ubsan_handle_missing_return(UnreachableData *Data) { in __ubsan_handle_missing_return() argument
432 handleMissingReturnImpl(Data, Opts); in __ubsan_handle_missing_return()
436 static void handleVLABoundNotPositive(VLABoundData *Data, ValueHandle Bound, in handleVLABoundNotPositive() argument
438 SourceLocation Loc = Data->Loc.acquire(); in handleVLABoundNotPositive()
448 << Value(Data->Type, Bound); in handleVLABoundNotPositive()
451 void __ubsan::__ubsan_handle_vla_bound_not_positive(VLABoundData *Data, in __ubsan_handle_vla_bound_not_positive() argument
454 handleVLABoundNotPositive(Data, Bound, Opts); in __ubsan_handle_vla_bound_not_positive()
456 void __ubsan::__ubsan_handle_vla_bound_not_positive_abort(VLABoundData *Data, in __ubsan_handle_vla_bound_not_positive_abort() argument
459 handleVLABoundNotPositive(Data, Bound, Opts); in __ubsan_handle_vla_bound_not_positive_abort()
463 static bool looksLikeFloatCastOverflowDataV1(void *Data) { in looksLikeFloatCastOverflowDataV1() argument
467 internal_memcpy(&FilenameOrTypeDescriptor, Data, in looksLikeFloatCastOverflowDataV1()
489 auto Data = reinterpret_cast<FloatCastOverflowData *>(DataPtr); in handleFloatCastOverflow() local
492 FromType = &Data->FromType; in handleFloatCastOverflow()
493 ToType = &Data->ToType; in handleFloatCastOverflow()
495 auto Data = reinterpret_cast<FloatCastOverflowDataV2 *>(DataPtr); in handleFloatCastOverflow() local
496 SourceLocation SLoc = Data->Loc.acquire(); in handleFloatCastOverflow()
500 FromType = &Data->FromType; in handleFloatCastOverflow()
501 ToType = &Data->ToType; in handleFloatCastOverflow()
511 void __ubsan::__ubsan_handle_float_cast_overflow(void *Data, ValueHandle From) { in __ubsan_handle_float_cast_overflow() argument
513 handleFloatCastOverflow(Data, From, Opts); in __ubsan_handle_float_cast_overflow()
515 void __ubsan::__ubsan_handle_float_cast_overflow_abort(void *Data, in __ubsan_handle_float_cast_overflow_abort() argument
518 handleFloatCastOverflow(Data, From, Opts); in __ubsan_handle_float_cast_overflow_abort()
522 static void handleLoadInvalidValue(InvalidValueData *Data, ValueHandle Val, in handleLoadInvalidValue() argument
524 SourceLocation Loc = Data->Loc.acquire(); in handleLoadInvalidValue()
527 bool IsBool = (0 == internal_strcmp(Data->Type.getTypeName(), "'bool'")) || in handleLoadInvalidValue()
528 (0 == internal_strncmp(Data->Type.getTypeName(), "'BOOL'", 6)); in handleLoadInvalidValue()
539 << Value(Data->Type, Val) << Data->Type; in handleLoadInvalidValue()
542 void __ubsan::__ubsan_handle_load_invalid_value(InvalidValueData *Data, in __ubsan_handle_load_invalid_value() argument
545 handleLoadInvalidValue(Data, Val, Opts); in __ubsan_handle_load_invalid_value()
547 void __ubsan::__ubsan_handle_load_invalid_value_abort(InvalidValueData *Data, in __ubsan_handle_load_invalid_value_abort() argument
550 handleLoadInvalidValue(Data, Val, Opts); in __ubsan_handle_load_invalid_value_abort()
554 static void handleImplicitConversion(ImplicitConversionData *Data, in handleImplicitConversion() argument
557 SourceLocation Loc = Data->Loc.acquire(); in handleImplicitConversion()
558 const TypeDescriptor &SrcTy = Data->FromType; in handleImplicitConversion()
559 const TypeDescriptor &DstTy = Data->ToType; in handleImplicitConversion()
564 switch (Data->Kind) { in handleImplicitConversion()
598 if (Data->BitfieldBits) in handleImplicitConversion()
604 << Data->BitfieldBits << (DstSigned ? "" : "un"); in handleImplicitConversion()
614 void __ubsan::__ubsan_handle_implicit_conversion(ImplicitConversionData *Data, in __ubsan_handle_implicit_conversion() argument
618 handleImplicitConversion(Data, Opts, Src, Dst); in __ubsan_handle_implicit_conversion()
621 ImplicitConversionData *Data, ValueHandle Src, ValueHandle Dst) { in __ubsan_handle_implicit_conversion_abort() argument
623 handleImplicitConversion(Data, Opts, Src, Dst); in __ubsan_handle_implicit_conversion_abort()
627 static void handleInvalidBuiltin(InvalidBuiltinData *Data, ReportOptions Opts) { in handleInvalidBuiltin() argument
628 SourceLocation Loc = Data->Loc.acquire(); in handleInvalidBuiltin()
638 << ((Data->Kind == BCK_CTZPassedZero) ? "ctz()" : "clz()"); in handleInvalidBuiltin()
641 void __ubsan::__ubsan_handle_invalid_builtin(InvalidBuiltinData *Data) { in __ubsan_handle_invalid_builtin() argument
643 handleInvalidBuiltin(Data, Opts); in __ubsan_handle_invalid_builtin()
645 void __ubsan::__ubsan_handle_invalid_builtin_abort(InvalidBuiltinData *Data) { in __ubsan_handle_invalid_builtin_abort() argument
647 handleInvalidBuiltin(Data, Opts); in __ubsan_handle_invalid_builtin_abort()
651 static void handleInvalidObjCCast(InvalidObjCCast *Data, ValueHandle Pointer, in handleInvalidObjCCast() argument
653 SourceLocation Loc = Data->Loc.acquire(); in handleInvalidObjCCast()
666 << GivenClassStr << Data->ExpectedType; in handleInvalidObjCCast()
669 void __ubsan::__ubsan_handle_invalid_objc_cast(InvalidObjCCast *Data, in __ubsan_handle_invalid_objc_cast() argument
672 handleInvalidObjCCast(Data, Pointer, Opts); in __ubsan_handle_invalid_objc_cast()
674 void __ubsan::__ubsan_handle_invalid_objc_cast_abort(InvalidObjCCast *Data, in __ubsan_handle_invalid_objc_cast_abort() argument
677 handleInvalidObjCCast(Data, Pointer, Opts); in __ubsan_handle_invalid_objc_cast_abort()
681 static void handleNonNullReturn(NonNullReturnData *Data, SourceLocation *LocPtr, in handleNonNullReturn() argument
697 if (!Data->AttrLoc.isInvalid()) in handleNonNullReturn()
698 Diag(Data->AttrLoc, DL_Note, ET, "%0 specified here") in handleNonNullReturn()
703 void __ubsan::__ubsan_handle_nonnull_return_v1(NonNullReturnData *Data, in __ubsan_handle_nonnull_return_v1() argument
706 handleNonNullReturn(Data, LocPtr, Opts, true); in __ubsan_handle_nonnull_return_v1()
709 void __ubsan::__ubsan_handle_nonnull_return_v1_abort(NonNullReturnData *Data, in __ubsan_handle_nonnull_return_v1_abort() argument
712 handleNonNullReturn(Data, LocPtr, Opts, true); in __ubsan_handle_nonnull_return_v1_abort()
716 void __ubsan::__ubsan_handle_nullability_return_v1(NonNullReturnData *Data, in __ubsan_handle_nullability_return_v1() argument
719 handleNonNullReturn(Data, LocPtr, Opts, false); in __ubsan_handle_nullability_return_v1()
723 NonNullReturnData *Data, SourceLocation *LocPtr) { in __ubsan_handle_nullability_return_v1_abort() argument
725 handleNonNullReturn(Data, LocPtr, Opts, false); in __ubsan_handle_nullability_return_v1_abort()
729 static void handleNonNullArg(NonNullArgData *Data, ReportOptions Opts, in handleNonNullArg() argument
731 SourceLocation Loc = Data->Loc.acquire(); in handleNonNullArg()
743 << Data->ArgIndex; in handleNonNullArg()
744 if (!Data->AttrLoc.isInvalid()) in handleNonNullArg()
745 Diag(Data->AttrLoc, DL_Note, ET, "%0 specified here") in handleNonNullArg()
749 void __ubsan::__ubsan_handle_nonnull_arg(NonNullArgData *Data) { in __ubsan_handle_nonnull_arg() argument
751 handleNonNullArg(Data, Opts, true); in __ubsan_handle_nonnull_arg()
754 void __ubsan::__ubsan_handle_nonnull_arg_abort(NonNullArgData *Data) { in __ubsan_handle_nonnull_arg_abort() argument
756 handleNonNullArg(Data, Opts, true); in __ubsan_handle_nonnull_arg_abort()
760 void __ubsan::__ubsan_handle_nullability_arg(NonNullArgData *Data) { in __ubsan_handle_nullability_arg() argument
762 handleNonNullArg(Data, Opts, false); in __ubsan_handle_nullability_arg()
765 void __ubsan::__ubsan_handle_nullability_arg_abort(NonNullArgData *Data) { in __ubsan_handle_nullability_arg_abort() argument
767 handleNonNullArg(Data, Opts, false); in __ubsan_handle_nullability_arg_abort()
771 static void handlePointerOverflowImpl(PointerOverflowData *Data, in handlePointerOverflowImpl() argument
775 SourceLocation Loc = Data->Loc.acquire(); in handlePointerOverflowImpl()
818 void __ubsan::__ubsan_handle_pointer_overflow(PointerOverflowData *Data, in __ubsan_handle_pointer_overflow() argument
822 handlePointerOverflowImpl(Data, Base, Result, Opts); in __ubsan_handle_pointer_overflow()
825 void __ubsan::__ubsan_handle_pointer_overflow_abort(PointerOverflowData *Data, in __ubsan_handle_pointer_overflow_abort() argument
829 handlePointerOverflowImpl(Data, Base, Result, Opts); in __ubsan_handle_pointer_overflow_abort()
833 static void handleCFIBadIcall(CFICheckFailData *Data, ValueHandle Function, in handleCFIBadIcall() argument
835 if (Data->CheckKind != CFITCK_ICall && Data->CheckKind != CFITCK_NVMFCall) in handleCFIBadIcall()
838 SourceLocation Loc = Data->Loc.acquire(); in handleCFIBadIcall()
846 const char *CheckKindStr = Data->CheckKind == CFITCK_NVMFCall in handleCFIBadIcall()
851 << Data->Type << CheckKindStr; in handleCFIBadIcall()
881 extern "C" void __ubsan_handle_cfi_bad_type_default(CFICheckFailData *Data, in __ubsan_handle_cfi_bad_type_default() argument
892 void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
896 void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
904 void __ubsan::__ubsan_handle_cfi_check_fail(CFICheckFailData *Data, in __ubsan_handle_cfi_check_fail() argument
908 if (Data->CheckKind == CFITCK_ICall || Data->CheckKind == CFITCK_NVMFCall) in __ubsan_handle_cfi_check_fail()
909 handleCFIBadIcall(Data, Value, Opts); in __ubsan_handle_cfi_check_fail()
911 __ubsan_handle_cfi_bad_type(Data, Value, ValidVtable, Opts); in __ubsan_handle_cfi_check_fail()
914 void __ubsan::__ubsan_handle_cfi_check_fail_abort(CFICheckFailData *Data, in __ubsan_handle_cfi_check_fail_abort() argument
918 if (Data->CheckKind == CFITCK_ICall || Data->CheckKind == CFITCK_NVMFCall) in __ubsan_handle_cfi_check_fail_abort()
919 handleCFIBadIcall(Data, Value, Opts); in __ubsan_handle_cfi_check_fail_abort()
921 __ubsan_handle_cfi_bad_type(Data, Value, ValidVtable, Opts); in __ubsan_handle_cfi_check_fail_abort()
925 static bool handleFunctionTypeMismatch(FunctionTypeMismatchData *Data, in handleFunctionTypeMismatch() argument
928 SourceLocation CallLoc = Data->Loc.acquire(); in handleFunctionTypeMismatch()
942 << FName << Data->Type; in handleFunctionTypeMismatch()
948 FunctionTypeMismatchData *Data, ValueHandle Function) { in __ubsan_handle_function_type_mismatch() argument
950 handleFunctionTypeMismatch(Data, Function, Opts); in __ubsan_handle_function_type_mismatch()
954 FunctionTypeMismatchData *Data, ValueHandle Function) { in __ubsan_handle_function_type_mismatch_abort() argument
956 if (handleFunctionTypeMismatch(Data, Function, Opts)) in __ubsan_handle_function_type_mismatch_abort()