Lines Matching refs:Data

29 static void handleTypeMismatchImpl(TypeMismatchData *Data, ValueHandle Pointer,
31 Location Loc = Data->Loc.acquire();
33 // Use the SourceLocation from Data to track deduplication, even if 'invalid'
36 if (Data->Loc.isInvalid())
41 << TypeCheckKinds[Data->TypeCheckKind] << Data->Type;
42 else if (Data->Alignment && (Pointer & (Data->Alignment - 1)))
45 << TypeCheckKinds[Data->TypeCheckKind] << (void*)Pointer
46 << Data->Alignment << Data->Type;
50 << TypeCheckKinds[Data->TypeCheckKind] << (void*)Pointer << Data->Type;
54 void __ubsan::__ubsan_handle_type_mismatch(TypeMismatchData *Data,
56 handleTypeMismatchImpl(Data, Pointer, getCallerLocation());
58 void __ubsan::__ubsan_handle_type_mismatch_abort(TypeMismatchData *Data,
60 handleTypeMismatchImpl(Data, Pointer, getCallerLocation());
65 template<typename T> static void HandleIntegerOverflow(OverflowData *Data,
69 SourceLocation Loc = Data->Loc.acquire();
75 << (Data->Type.isSignedIntegerTy() ? "signed" : "unsigned")
76 << Value(Data->Type, LHS) << Operator << RHS << Data->Type;
79 void __ubsan::__ubsan_handle_add_overflow(OverflowData *Data,
81 HandleIntegerOverflow(Data, LHS, "+", Value(Data->Type, RHS));
83 void __ubsan::__ubsan_handle_add_overflow_abort(OverflowData *Data,
86 __ubsan_handle_add_overflow(Data, LHS, RHS);
90 void __ubsan::__ubsan_handle_sub_overflow(OverflowData *Data,
92 HandleIntegerOverflow(Data, LHS, "-", Value(Data->Type, RHS));
94 void __ubsan::__ubsan_handle_sub_overflow_abort(OverflowData *Data,
97 __ubsan_handle_sub_overflow(Data, LHS, RHS);
101 void __ubsan::__ubsan_handle_mul_overflow(OverflowData *Data,
103 HandleIntegerOverflow(Data, LHS, "*", Value(Data->Type, RHS));
105 void __ubsan::__ubsan_handle_mul_overflow_abort(OverflowData *Data,
108 __ubsan_handle_mul_overflow(Data, LHS, RHS);
112 void __ubsan::__ubsan_handle_negate_overflow(OverflowData *Data,
114 SourceLocation Loc = Data->Loc.acquire();
118 if (Data->Type.isSignedIntegerTy())
122 << Value(Data->Type, OldVal) << Data->Type;
126 << Value(Data->Type, OldVal) << Data->Type;
128 void __ubsan::__ubsan_handle_negate_overflow_abort(OverflowData *Data,
130 __ubsan_handle_negate_overflow(Data, OldVal);
134 void __ubsan::__ubsan_handle_divrem_overflow(OverflowData *Data,
136 SourceLocation Loc = Data->Loc.acquire();
140 Value LHSVal(Data->Type, LHS);
141 Value RHSVal(Data->Type, RHS);
145 << LHSVal << Data->Type;
149 void __ubsan::__ubsan_handle_divrem_overflow_abort(OverflowData *Data,
152 __ubsan_handle_divrem_overflow(Data, LHS, RHS);
156 void __ubsan::__ubsan_handle_shift_out_of_bounds(ShiftOutOfBoundsData *Data,
159 SourceLocation Loc = Data->Loc.acquire();
163 Value LHSVal(Data->LHSType, LHS);
164 Value RHSVal(Data->RHSType, RHS);
167 else if (RHSVal.getPositiveIntValue() >= Data->LHSType.getIntegerBitWidth())
170 << RHSVal << Data->LHSType.getIntegerBitWidth() << Data->LHSType;
176 << LHSVal << RHSVal << Data->LHSType;
179 ShiftOutOfBoundsData *Data,
182 __ubsan_handle_shift_out_of_bounds(Data, LHS, RHS);
186 void __ubsan::__ubsan_handle_out_of_bounds(OutOfBoundsData *Data,
188 SourceLocation Loc = Data->Loc.acquire();
192 Value IndexVal(Data->IndexType, Index);
194 << IndexVal << Data->ArrayType;
196 void __ubsan::__ubsan_handle_out_of_bounds_abort(OutOfBoundsData *Data,
198 __ubsan_handle_out_of_bounds(Data, Index);
202 void __ubsan::__ubsan_handle_builtin_unreachable(UnreachableData *Data) {
203 Diag(Data->Loc, DL_Error, "execution reached a __builtin_unreachable() call");
207 void __ubsan::__ubsan_handle_missing_return(UnreachableData *Data) {
208 Diag(Data->Loc, DL_Error,
214 void __ubsan::__ubsan_handle_vla_bound_not_positive(VLABoundData *Data,
216 SourceLocation Loc = Data->Loc.acquire();
222 << Value(Data->Type, Bound);
224 void __ubsan::__ubsan_handle_vla_bound_not_positive_abort(VLABoundData *Data,
226 __ubsan_handle_vla_bound_not_positive(Data, Bound);
231 void __ubsan::__ubsan_handle_float_cast_overflow(FloatCastOverflowData *Data,
236 << Value(Data->FromType, From) << Data->FromType << Data->ToType;
239 FloatCastOverflowData *Data,
243 << Value(Data->FromType, From) << Data->FromType << Data->ToType;
247 void __ubsan::__ubsan_handle_load_invalid_value(InvalidValueData *Data,
249 SourceLocation Loc = Data->Loc.acquire();
255 << Value(Data->Type, Val) << Data->Type;
257 void __ubsan::__ubsan_handle_load_invalid_value_abort(InvalidValueData *Data,
259 __ubsan_handle_load_invalid_value(Data, Val);
264 FunctionTypeMismatchData *Data,
270 Diag(Data->Loc, DL_Error,
272 << FName << Data->Type;
277 FunctionTypeMismatchData *Data,
279 __ubsan_handle_function_type_mismatch(Data, Function);