@@ -60,12 +60,12 @@ define i32 @bar() {
6060; CHECK-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8
6161; CHECK-NEXT: call void @llvm.donothing()
6262; CHECK-NEXT: store i32 0, ptr @__msan_param_tls, align 8
63- ; CHECK-NEXT: store i32 0, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 8) to ptr ), align 8
64- ; CHECK-NEXT: store i64 0, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 16) to ptr ), align 8
65- ; CHECK-NEXT: store i64 0, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 24) to ptr ), align 8
66- ; CHECK-NEXT: store i32 0, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 4) to ptr ), align 8
67- ; CHECK-NEXT: store i64 0, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 8) to ptr ), align 8
68- ; CHECK-NEXT: store i64 0, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 16) to ptr ), align 8
63+ ; CHECK-NEXT: store i32 0, ptr getelementptr (i8, ptr @__msan_param_tls, i64 8), align 8
64+ ; CHECK-NEXT: store i64 0, ptr getelementptr (i8, ptr @__msan_param_tls, i64 16), align 8
65+ ; CHECK-NEXT: store i64 0, ptr getelementptr (i8, ptr @__msan_param_tls, i64 24), align 8
66+ ; CHECK-NEXT: store i32 0, ptr getelementptr (i8, ptr @__msan_va_arg_tls, i64 4), align 8
67+ ; CHECK-NEXT: store i64 0, ptr getelementptr (i8, ptr @__msan_va_arg_tls, i64 8), align 8
68+ ; CHECK-NEXT: store i64 0, ptr getelementptr (i8, ptr @__msan_va_arg_tls, i64 16), align 8
6969; CHECK-NEXT: store i64 24, ptr @__msan_va_arg_overflow_size_tls, align 8
7070; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8
7171; CHECK-NEXT: [[TMP2:%.*]] = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00)
@@ -87,8 +87,8 @@ define i32 @bar2() {
8787; CHECK-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8
8888; CHECK-NEXT: call void @llvm.donothing()
8989; CHECK-NEXT: store i32 0, ptr @__msan_param_tls, align 8
90- ; CHECK-NEXT: store <2 x i64> zeroinitializer, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 8) to ptr ), align 8
91- ; CHECK-NEXT: store <2 x i64> zeroinitializer, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 8) to ptr ), align 8
90+ ; CHECK-NEXT: store <2 x i64> zeroinitializer, ptr getelementptr (i8, ptr @__msan_param_tls, i64 8), align 8
91+ ; CHECK-NEXT: store <2 x i64> zeroinitializer, ptr getelementptr (i8, ptr @__msan_va_arg_tls, i64 8), align 8
9292; CHECK-NEXT: store i64 24, ptr @__msan_va_arg_overflow_size_tls, align 8
9393; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8
9494; CHECK-NEXT: [[TMP2:%.*]] = call i32 (i32, ...) @foo(i32 0, <2 x i64> <i64 1, i64 2>)
@@ -110,7 +110,7 @@ define i32 @bar4() {
110110; CHECK-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8
111111; CHECK-NEXT: call void @llvm.donothing()
112112; CHECK-NEXT: store i32 0, ptr @__msan_param_tls, align 8
113- ; CHECK-NEXT: store [2 x i64] zeroinitializer, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 8) to ptr ), align 8
113+ ; CHECK-NEXT: store [2 x i64] zeroinitializer, ptr getelementptr (i8, ptr @__msan_param_tls, i64 8), align 8
114114; CHECK-NEXT: store [2 x i64] zeroinitializer, ptr @__msan_va_arg_tls, align 8
115115; CHECK-NEXT: store i64 16, ptr @__msan_va_arg_overflow_size_tls, align 8
116116; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8
@@ -130,8 +130,8 @@ define i32 @bar5() {
130130; CHECK-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8
131131; CHECK-NEXT: call void @llvm.donothing()
132132; CHECK-NEXT: store i32 0, ptr @__msan_param_tls, align 8
133- ; CHECK-NEXT: store [2 x i128] zeroinitializer, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 8) to ptr ), align 8
134- ; CHECK-NEXT: store [2 x i128] zeroinitializer, ptr inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 8) to ptr ), align 8
133+ ; CHECK-NEXT: store [2 x i128] zeroinitializer, ptr getelementptr (i8, ptr @__msan_param_tls, i64 8), align 8
134+ ; CHECK-NEXT: store [2 x i128] zeroinitializer, ptr getelementptr (i8, ptr @__msan_va_arg_tls, i64 8), align 8
135135; CHECK-NEXT: store i64 40, ptr @__msan_va_arg_overflow_size_tls, align 8
136136; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8
137137; CHECK-NEXT: [[TMP2:%.*]] = call i32 (i32, ...) @foo(i32 0, [2 x i128] [i128 1, i128 2])
@@ -156,7 +156,7 @@ define i32 @bar6(ptr %arg) {
156156; CHECK-NEXT: [[TMP4:%.*]] = xor i64 [[TMP3]], 17592186044416
157157; CHECK-NEXT: [[TMP5:%.*]] = add i64 [[TMP4]], 8796093022208
158158; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
159- ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 8) to ptr ), i8 0, i64 16, i1 false)
159+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 getelementptr (i8, ptr @__msan_param_tls, i64 8), i8 0, i64 16, i1 false)
160160; CHECK-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[ARG]] to i64
161161; CHECK-NEXT: [[TMP8:%.*]] = and i64 [[TMP7]], -246290604621825
162162; CHECK-NEXT: [[TMP9:%.*]] = xor i64 [[TMP8]], 17592186044416
@@ -187,13 +187,13 @@ define i32 @bar7(ptr %arg) {
187187; CHECK-NEXT: [[TMP4:%.*]] = xor i64 [[TMP3]], 17592186044416
188188; CHECK-NEXT: [[TMP5:%.*]] = add i64 [[TMP4]], 8796093022208
189189; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
190- ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_param_tls to i64) , i64 8) to ptr ), i8 0, i64 32, i1 false)
190+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 getelementptr (i8, ptr @__msan_param_tls, i64 8), i8 0, i64 32, i1 false)
191191; CHECK-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[ARG]] to i64
192192; CHECK-NEXT: [[TMP8:%.*]] = and i64 [[TMP7]], -246290604621825
193193; CHECK-NEXT: [[TMP9:%.*]] = xor i64 [[TMP8]], 17592186044416
194194; CHECK-NEXT: [[TMP10:%.*]] = add i64 [[TMP9]], 8796093022208
195195; CHECK-NEXT: [[TMP11:%.*]] = inttoptr i64 [[TMP10]] to ptr
196- ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 inttoptr (i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 8) to ptr ), ptr align 8 [[TMP11]], i64 32, i1 false)
196+ ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 getelementptr (i8, ptr @__msan_va_arg_tls, i64 8), ptr align 8 [[TMP11]], i64 32, i1 false)
197197; CHECK-NEXT: store i64 40, ptr @__msan_va_arg_overflow_size_tls, align 8
198198; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8
199199; CHECK-NEXT: [[TMP12:%.*]] = call i32 (i32, ...) @foo(i32 0, ptr byval([4 x i64]) align 16 [[ARG]])
@@ -231,6 +231,6 @@ entry:
231231
232232; If the size of __msan_va_arg_tls changes the second argument of `add` must also be changed.
233233; CHECK-LABEL: @many_args
234- ; CHECK: i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 792)
235- ; CHECK-NOT: i64 add (i64 ptrtoint ( ptr @__msan_va_arg_tls to i64) , i64 800)
234+ ; CHECK: getelementptr (i8, ptr @__msan_va_arg_tls, i64 792)
235+ ; CHECK-NOT: getelementptr (i8, ptr @__msan_va_arg_tls, i64 800)
236236declare i64 @sum (i64 %n , ...)
0 commit comments