Lines Matching full:data

52   /// Checking the object expression in a non-static data member access. Must
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()
101 // Use the SourceLocation from Data to track deduplication, even if it's 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()
560 const TypeDescriptor &SrcTy = Data->FromType; in handleImplicitConversion()
561 const TypeDescriptor &DstTy = Data->ToType; in handleImplicitConversion()
566 switch (Data->Kind) { in handleImplicitConversion()
607 void __ubsan::__ubsan_handle_implicit_conversion(ImplicitConversionData *Data, in __ubsan_handle_implicit_conversion() argument
611 handleImplicitConversion(Data, Opts, Src, Dst); in __ubsan_handle_implicit_conversion()
614 ImplicitConversionData *Data, ValueHandle Src, ValueHandle Dst) { in __ubsan_handle_implicit_conversion_abort() argument
616 handleImplicitConversion(Data, Opts, Src, Dst); in __ubsan_handle_implicit_conversion_abort()
620 static void handleInvalidBuiltin(InvalidBuiltinData *Data, ReportOptions Opts) { in handleInvalidBuiltin() argument
621 SourceLocation Loc = Data->Loc.acquire(); in handleInvalidBuiltin()
631 << ((Data->Kind == BCK_CTZPassedZero) ? "ctz()" : "clz()"); in handleInvalidBuiltin()
634 void __ubsan::__ubsan_handle_invalid_builtin(InvalidBuiltinData *Data) { in __ubsan_handle_invalid_builtin() argument
636 handleInvalidBuiltin(Data, Opts); in __ubsan_handle_invalid_builtin()
638 void __ubsan::__ubsan_handle_invalid_builtin_abort(InvalidBuiltinData *Data) { in __ubsan_handle_invalid_builtin_abort() argument
640 handleInvalidBuiltin(Data, Opts); in __ubsan_handle_invalid_builtin_abort()
644 static void handleInvalidObjCCast(InvalidObjCCast *Data, ValueHandle Pointer, in handleInvalidObjCCast() argument
646 SourceLocation Loc = Data->Loc.acquire(); in handleInvalidObjCCast()
659 << GivenClassStr << Data->ExpectedType; in handleInvalidObjCCast()
662 void __ubsan::__ubsan_handle_invalid_objc_cast(InvalidObjCCast *Data, in __ubsan_handle_invalid_objc_cast() argument
665 handleInvalidObjCCast(Data, Pointer, Opts); in __ubsan_handle_invalid_objc_cast()
667 void __ubsan::__ubsan_handle_invalid_objc_cast_abort(InvalidObjCCast *Data, in __ubsan_handle_invalid_objc_cast_abort() argument
670 handleInvalidObjCCast(Data, Pointer, Opts); in __ubsan_handle_invalid_objc_cast_abort()
674 static void handleNonNullReturn(NonNullReturnData *Data, SourceLocation *LocPtr, in handleNonNullReturn() argument
690 if (!Data->AttrLoc.isInvalid()) in handleNonNullReturn()
691 Diag(Data->AttrLoc, DL_Note, ET, "%0 specified here") in handleNonNullReturn()
696 void __ubsan::__ubsan_handle_nonnull_return_v1(NonNullReturnData *Data, in __ubsan_handle_nonnull_return_v1() argument
699 handleNonNullReturn(Data, LocPtr, Opts, true); in __ubsan_handle_nonnull_return_v1()
702 void __ubsan::__ubsan_handle_nonnull_return_v1_abort(NonNullReturnData *Data, in __ubsan_handle_nonnull_return_v1_abort() argument
705 handleNonNullReturn(Data, LocPtr, Opts, true); in __ubsan_handle_nonnull_return_v1_abort()
709 void __ubsan::__ubsan_handle_nullability_return_v1(NonNullReturnData *Data, in __ubsan_handle_nullability_return_v1() argument
712 handleNonNullReturn(Data, LocPtr, Opts, false); in __ubsan_handle_nullability_return_v1()
716 NonNullReturnData *Data, SourceLocation *LocPtr) { in __ubsan_handle_nullability_return_v1_abort() argument
718 handleNonNullReturn(Data, LocPtr, Opts, false); in __ubsan_handle_nullability_return_v1_abort()
722 static void handleNonNullArg(NonNullArgData *Data, ReportOptions Opts, in handleNonNullArg() argument
724 SourceLocation Loc = Data->Loc.acquire(); in handleNonNullArg()
736 << Data->ArgIndex; in handleNonNullArg()
737 if (!Data->AttrLoc.isInvalid()) in handleNonNullArg()
738 Diag(Data->AttrLoc, DL_Note, ET, "%0 specified here") in handleNonNullArg()
742 void __ubsan::__ubsan_handle_nonnull_arg(NonNullArgData *Data) { in __ubsan_handle_nonnull_arg() argument
744 handleNonNullArg(Data, Opts, true); in __ubsan_handle_nonnull_arg()
747 void __ubsan::__ubsan_handle_nonnull_arg_abort(NonNullArgData *Data) { in __ubsan_handle_nonnull_arg_abort() argument
749 handleNonNullArg(Data, Opts, true); in __ubsan_handle_nonnull_arg_abort()
753 void __ubsan::__ubsan_handle_nullability_arg(NonNullArgData *Data) { in __ubsan_handle_nullability_arg() argument
755 handleNonNullArg(Data, Opts, false); in __ubsan_handle_nullability_arg()
758 void __ubsan::__ubsan_handle_nullability_arg_abort(NonNullArgData *Data) { in __ubsan_handle_nullability_arg_abort() argument
760 handleNonNullArg(Data, Opts, false); in __ubsan_handle_nullability_arg_abort()
764 static void handlePointerOverflowImpl(PointerOverflowData *Data, in handlePointerOverflowImpl() argument
768 SourceLocation Loc = Data->Loc.acquire(); in handlePointerOverflowImpl()
811 void __ubsan::__ubsan_handle_pointer_overflow(PointerOverflowData *Data, in __ubsan_handle_pointer_overflow() argument
815 handlePointerOverflowImpl(Data, Base, Result, Opts); in __ubsan_handle_pointer_overflow()
818 void __ubsan::__ubsan_handle_pointer_overflow_abort(PointerOverflowData *Data, in __ubsan_handle_pointer_overflow_abort() argument
822 handlePointerOverflowImpl(Data, Base, Result, Opts); in __ubsan_handle_pointer_overflow_abort()
826 static void handleCFIBadIcall(CFICheckFailData *Data, ValueHandle Function, in handleCFIBadIcall() argument
828 if (Data->CheckKind != CFITCK_ICall && Data->CheckKind != CFITCK_NVMFCall) in handleCFIBadIcall()
831 SourceLocation Loc = Data->Loc.acquire(); in handleCFIBadIcall()
839 const char *CheckKindStr = Data->CheckKind == CFITCK_NVMFCall in handleCFIBadIcall()
844 << Data->Type << CheckKindStr; in handleCFIBadIcall()
874 extern "C" void __ubsan_handle_cfi_bad_type_default(CFICheckFailData *Data, in __ubsan_handle_cfi_bad_type_default() argument
885 void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
889 void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
897 void __ubsan::__ubsan_handle_cfi_check_fail(CFICheckFailData *Data, in __ubsan_handle_cfi_check_fail() argument
901 if (Data->CheckKind == CFITCK_ICall || Data->CheckKind == CFITCK_NVMFCall) in __ubsan_handle_cfi_check_fail()
902 handleCFIBadIcall(Data, Value, Opts); in __ubsan_handle_cfi_check_fail()
904 __ubsan_handle_cfi_bad_type(Data, Value, ValidVtable, Opts); in __ubsan_handle_cfi_check_fail()
907 void __ubsan::__ubsan_handle_cfi_check_fail_abort(CFICheckFailData *Data, in __ubsan_handle_cfi_check_fail_abort() argument
911 if (Data->CheckKind == CFITCK_ICall || Data->CheckKind == CFITCK_NVMFCall) in __ubsan_handle_cfi_check_fail_abort()
912 handleCFIBadIcall(Data, Value, Opts); in __ubsan_handle_cfi_check_fail_abort()
914 __ubsan_handle_cfi_bad_type(Data, Value, ValidVtable, Opts); in __ubsan_handle_cfi_check_fail_abort()