9
9
; CHECK-NEXT: .byte 0
10
10
; CHECK-NEXT: .hword 0
11
11
; Num Functions
12
- ; CHECK-NEXT: .word 14
12
+ ; CHECK-NEXT: .word 15
13
13
; Num LargeConstants
14
14
; CHECK-NEXT: .word 4
15
15
; Num Callsites
16
- ; CHECK-NEXT: .word 18
16
+ ; CHECK-NEXT: .word 22
17
17
18
18
; Functions and stack size
19
19
; CHECK-NEXT: .xword constantargs
49
49
; CHECK-NEXT: .xword longid
50
50
; CHECK-NEXT: .xword 16
51
51
; CHECK-NEXT: .xword 4
52
+ ; CHECK-NEXT: .xword statepoint_longid
53
+ ; CHECK-NEXT: .xword 16
54
+ ; CHECK-NEXT: .xword 4
52
55
; CHECK-NEXT: .xword clobberLR
53
56
; CHECK-NEXT: .xword 112
54
57
; CHECK-NEXT: .xword 1
@@ -443,6 +446,26 @@ entry:
443
446
ret void
444
447
}
445
448
449
+ ; Test a 64-bit ID for statepoint.
450
+ ;
451
+ ; CHECK: .xword 4294967295
452
+ ; CHECK-LABEL: .word .L{{.*}}-statepoint_longid
453
+ ; CHECK: .xword 4294967296
454
+ ; CHECK-LABEL: .word .L{{.*}}-statepoint_longid
455
+ ; CHECK: .xword 9223372036854775807
456
+ ; CHECK-LABEL: .word .L{{.*}}-statepoint_longid
457
+ ; CHECK: .xword -1
458
+ ; CHECK-LABEL: .word .L{{.*}}-statepoint_longid
459
+ define void @statepoint_longid () gc "statepoint-example" {
460
+ entry:
461
+ %safepoint_token1 = tail call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 4294967295 , i32 0 , ptr elementtype(void ()) @return_void , i32 0 , i32 0 , i32 0 , i32 0 )
462
+ %safepoint_token2 = tail call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 4294967296 , i32 0 , ptr elementtype(void ()) @return_void , i32 0 , i32 0 , i32 0 , i32 0 )
463
+ %safepoint_token3 = tail call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 9223372036854775807 , i32 0 , ptr elementtype(void ()) @return_void , i32 0 , i32 0 , i32 0 , i32 0 )
464
+ %safepoint_token4 = tail call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 -1 , i32 0 , ptr elementtype(void ()) @return_void , i32 0 , i32 0 , i32 0 , i32 0 )
465
+ ret void
466
+ }
467
+ declare void @return_void ()
468
+
446
469
; Map a value when R11 is the only free register.
447
470
; The scratch register should not be used for a live stackmap value.
448
471
;
@@ -463,8 +486,8 @@ define void @clobberLR(i32 %a) {
463
486
ret void
464
487
}
465
488
466
- ; A stack frame which needs to be realigned at runtime (to meet alignment
467
- ; criteria for values on the stack) does not have a fixed frame size.
489
+ ; A stack frame which needs to be realigned at runtime (to meet alignment
490
+ ; criteria for values on the stack) does not have a fixed frame size.
468
491
; CHECK-LABEL: .word .L{{.*}}-needsStackRealignment
469
492
; CHECK-NEXT: .hword 0
470
493
; 0 locations
@@ -537,3 +560,4 @@ define void @floats(float %f, double %g) {
537
560
declare void @llvm.experimental.stackmap (i64 , i32 , ...)
538
561
declare void @llvm.experimental.patchpoint.void (i64 , i32 , ptr , i32 , ...)
539
562
declare i64 @llvm.experimental.patchpoint.i64 (i64 , i32 , ptr , i32 , ...)
563
+ declare token @llvm.experimental.gc.statepoint.p0 (i64 , i32 , ptr , i32 , i32 , ...)
0 commit comments