@@ -114,7 +114,7 @@ define void @call_custom_without_ret(i32 %a, i32 %b) {
114114  ; CHECK: @call_custom_without_ret.dfsan 
115115  ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
116116  ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
117-   ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
117+   ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
118118  ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
119119  ; CHECK: call void @__dfso_custom_without_ret(i32 %a, i32 %b, i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext [[AO]], i32 zeroext [[BO]]) 
120120  ; CHECK-NEXT: ret void 
@@ -129,7 +129,7 @@ define i32 @call_custom_with_ret(i32 %a, i32 %b) {
129129  ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
130130  ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
131131  ; CHECK: %labelreturn = alloca i8, align 1 
132-   ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
132+   ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
133133  ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
134134  ; CHECK: {{.*}} = call i32 @__dfso_custom_with_ret(i32 %a, i32 %b, i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn) 
135135  ; CHECK: [[RS:%.*]] = load i8, ptr %labelreturn, align 1 
@@ -147,7 +147,7 @@ define void @call_custom_varg_without_ret(i32 %a, i32 %b) {
147147  ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
148148  ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
149149  ; CHECK: %labelva = alloca [1 x i8], align 1 
150-   ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
150+   ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
151151  ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
152152  ; CHECK: [[VS0:%.*]] = getelementptr inbounds nuw [1 x i8], ptr %labelva, i32 0, i32 0 
153153  ; CHECK: store i8 [[AS]], ptr [[VS0]], align 1 
@@ -170,7 +170,7 @@ define i32 @call_custom_varg_with_ret(i32 %a, i32 %b) {
170170  ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls 
171171  ; CHECK: %labelreturn = alloca i8, align 1 
172172  ; CHECK: %labelva = alloca [1 x i8], align 1 
173-   ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
173+   ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
174174  ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
175175  ; CHECK: [[VS0:%.*]] = getelementptr inbounds nuw [1 x i8], ptr %labelva, i32 0, i32 0 
176176  ; CHECK: store i8 [[BS]], ptr [[VS0]], align 1 
@@ -194,7 +194,7 @@ define i32 @call_custom_cb_with_ret(i32 %a, i32 %b) {
194194  ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
195195  ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
196196  ; CHECK: %labelreturn = alloca i8, align 1 
197-   ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
197+   ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
198198  ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
199199  ; CHECK: {{.*}} = call i32 @__dfso_custom_cb_with_ret(ptr @cb_with_ret.dfsan, i32 %a, i32 %b, i8 zeroext 0, i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext 0, i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn) 
200200  ; CHECK: [[RS:%.*]] = load i8, ptr %labelreturn, align 1 
@@ -210,7 +210,7 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
210210  ; CHECK-LABEL: @call_custom_cb_without_ret.dfsan 
211211  ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
212212  ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
213-   ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
213+   ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
214214  ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
215215  ; CHECK: call void @__dfso_custom_cb_without_ret(ptr @cb_without_ret.dfsan, i32 %a, i32 %b, i8 zeroext 0, i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext 0, i32 zeroext [[AO]], i32 zeroext [[BO]]) 
216216  ; CHECK-NEXT: ret void 
@@ -228,7 +228,7 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
228228; CHECK: define linkonce_odr void @"dfso$custom_without_ret"(i32 %0, i32 %1) 
229229; CHECK:  [[BO:%.*]]  = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
230230; CHECK-NEXT:  [[AO:%.*]]  = load i32, ptr @__dfsan_arg_origin_tls, align 4 
231- ; CHECK-NEXT:  [[BS:%.*]]  = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
231+ ; CHECK-NEXT:  [[BS:%.*]]  = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
232232; CHECK-NEXT:  [[AS:%.*]]  = load i8, ptr @__dfsan_arg_tls, align 2 
233233; CHECK-NEXT:  call void @__dfso_custom_without_ret(i32 %0, i32 %1, i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext [[AO]], i32 zeroext [[BO]]) 
234234; CHECK-NEXT:  ret void 
@@ -238,7 +238,7 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
238238; CHECK-NEXT:  [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
239239; CHECK-NEXT:  [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
240240; CHECK-NEXT:  %labelreturn = alloca i8, align 1 
241- ; CHECK-NEXT:  [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
241+ ; CHECK-NEXT:  [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
242242; CHECK-NEXT:  [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
243243; CHECK-NEXT:  [[R:%.*]] = call i32 @__dfso_custom_with_ret(i32 %0, i32 %1, i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn) 
244244; CHECK-NEXT:  [[RS:%.*]] = load i8, ptr %labelreturn, align 1 
@@ -261,8 +261,8 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
261261; CHECK-NEXT:  [[AO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
262262; CHECK-NEXT:  [[CO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
263263; CHECK-NEXT:  %labelreturn = alloca i8, align 1 
264- ; CHECK-NEXT:  [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 4) to ptr ), align 2 
265- ; CHECK-NEXT:  [[AS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
264+ ; CHECK-NEXT:  [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 4), align 2 
265+ ; CHECK-NEXT:  [[AS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
266266; CHECK-NEXT:  [[CS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
267267; CHECK-NEXT:  [[R:%.*]] = call i32 @__dfso_custom_cb_with_ret(ptr %0, i32 %1, i32 %2, i8 zeroext [[CS]], i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext [[CO]], i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn) 
268268; CHECK-NEXT:  [[RS:%.*]] = load i8, ptr %labelreturn, align 1 
@@ -275,8 +275,8 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
275275; CHECK:   [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4 
276276; CHECK-NEXT:  [[AO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4 
277277; CHECK-NEXT:  [[CO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4 
278- ; CHECK-NEXT:  [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 4) to ptr ), align 2 
279- ; CHECK-NEXT:  [[AS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__dfsan_arg_tls to i64) , i64 2) to ptr ), align 2 
278+ ; CHECK-NEXT:  [[BS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 4), align 2 
279+ ; CHECK-NEXT:  [[AS:%.*]] = load i8, ptr getelementptr (i8,  ptr @__dfsan_arg_tls, i64 2), align 2 
280280; CHECK-NEXT:  [[CS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2 
281281; CHECK-NEXT:  call void @__dfso_custom_cb_without_ret(ptr %0, i32 %1, i32 %2, i8 zeroext [[CS]], i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext [[CO]], i32 zeroext [[AO]], i32 zeroext [[BO]]) 
282282; CHECK-NEXT:  ret void 
0 commit comments