@@ -238,6 +238,37 @@ define void @calls_statepoint(ptr addrspace(1) %arg0, i64 %arg1, i32 %arg2, i32
238238 ret void
239239}
240240
241+ declare void @llvm.experimental.patchpoint.void (i64 , i32 , ptr , i32 , ...)
242+ declare i64 @llvm.experimental.patchpoint.i64 (i64 , i32 , ptr , i32 , ...)
243+
244+ define void @test_patchpoint (i64 %arg0 , i32 %arg1 , i32 %arg2 ) {
245+ ; CHECK: immarg operand has non-immediate parameter
246+ ; CHECK-NEXT: i64 %arg0
247+ ; CHECK-NEXT: call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 %arg0, i32 4, ptr null, i32 0)
248+ ; CHECK: immarg operand has non-immediate parameter
249+ ; CHECK-NEXT: i32 %arg1
250+ ; CHECK-NEXT: call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 %arg1, ptr null, i32 0)
251+ ; CHECK: immarg operand has non-immediate parameter
252+ ; CHECK-NEXT: i32 %arg2
253+ ; CHECK-NEXT: call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 4, ptr null, i32 %arg2)
254+ ; CHECK: immarg operand has non-immediate parameter
255+ ; CHECK-NEXT: i64 %arg0
256+ ; CHECK-NEXT: %patchpoint0 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 %arg0, i32 4, ptr null, i32 0)
257+ ; CHECK: immarg operand has non-immediate parameter
258+ ; CHECK-NEXT: i32 %arg1
259+ ; CHECK-NEXT: %patchpoint1 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 0, i32 %arg1, ptr null, i32 0)
260+ ; CHECK: immarg operand has non-immediate parameter
261+ ; CHECK-NEXT: i32 %arg2
262+ ; CHECK-NEXT: %patchpoint2 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 0, i32 4, ptr null, i32 %arg2)
263+ call void (i64 , i32 , ptr , i32 , ...) @llvm.experimental.patchpoint.void (i64 %arg0 , i32 4 , ptr null , i32 0 )
264+ call void (i64 , i32 , ptr , i32 , ...) @llvm.experimental.patchpoint.void (i64 0 , i32 %arg1 , ptr null , i32 0 )
265+ call void (i64 , i32 , ptr , i32 , ...) @llvm.experimental.patchpoint.void (i64 0 , i32 4 , ptr null , i32 %arg2 )
266+ %patchpoint0 = call i64 (i64 , i32 , ptr , i32 , ...) @llvm.experimental.patchpoint.i64 (i64 %arg0 , i32 4 , ptr null , i32 0 )
267+ %patchpoint1 = call i64 (i64 , i32 , ptr , i32 , ...) @llvm.experimental.patchpoint.i64 (i64 0 , i32 %arg1 , ptr null , i32 0 )
268+ %patchpoint2 = call i64 (i64 , i32 , ptr , i32 , ...) @llvm.experimental.patchpoint.i64 (i64 0 , i32 4 , ptr null , i32 %arg2 )
269+ ret void
270+ }
271+
241272declare void @llvm.hwasan.check.memaccess (ptr , ptr , i32 )
242273
243274define void @hwasan_check_memaccess (ptr %arg0 ,ptr %arg1 , i32 %arg2 ) {
0 commit comments