1
- ; REQUIRES: x86-registered-target
2
- ; RUN: llc < %s | FileCheck %s
3
-
4
- ; Repro for issue https://reviews.llvm.org/D149367#4619121
5
- ; Validates that `indirect ptr null` and a jump table can be used in the same function.
6
-
7
- ; Verify branch labels match what's in the CodeView
8
- ; CHECK: .Ltmp2:
9
- ; CHECK-NEXT: jmpq *%{{.*}}
10
-
11
- ; Verify jump table have the same entry size, base offset and shift as what's in the CodeView
12
- ; CHECK: {{\.?}}LJTI0_0:
13
- ; CHECK-NEXT: .long .LBB0_[[#]]-.LJTI0_0
14
-
15
- ; Verify CodeView
16
- ; CHECK: .short 4441 # Record kind: S_ARMSWITCHTABLE
17
- ; CHECK-NEXT: .secrel32 .LJTI0_0 # Base offset
18
- ; CHECK-NEXT: .secidx .LJTI0_0 # Base section index
19
- ; CHECK-NEXT: .short 4 # Switch type
20
- ; CHECK-NEXT: .secrel32 .Ltmp2 # Branch offset
21
- ; CHECK-NEXT: .secrel32 .LJTI0_0 # Table offset
22
- ; CHECK-NEXT: .secidx .Ltmp2 # Branch section index
23
- ; CHECK-NEXT: .secidx .LJTI0_0 # Table section index
24
- ; CHECK-NEXT: .long 4 # Entries count
25
- ; CHECK-NOT: .short 4441 # Record kind: S_ARMSWITCHTABLE
26
-
27
- target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
28
- target triple = "x86_64-pc-windows-msvc19.34.0"
29
-
30
- define i32 @f () !dbg !5 {
31
- entry:
32
- indirectbr ptr null , [label %BC_SUCCEED ], !dbg !11
33
-
34
- BC_SUCCEED: ; preds = %entry
35
- %0 = lshr i64 0 , 0
36
- switch i64 %0 , label %sw.default.i.i2445 [
37
- i64 3 , label %sw.bb15.i.i
38
- i64 1 , label %sw.bb7.i.i
39
- i64 2 , label %sw.bb11.i.i2444
40
- i64 0 , label %sw.bb3.i.i
41
- ]
42
-
43
- sw.bb3.i.i: ; preds = %BC_SUCCEED
44
- ret i32 0
45
-
46
- sw.bb7.i.i: ; preds = %BC_SUCCEED
47
- ret i32 0
48
-
49
- sw.bb11.i.i2444 : ; preds = %BC_SUCCEED
50
- ret i32 0
51
-
52
- sw.bb15.i.i: ; preds = %BC_SUCCEED
53
- ret i32 0
54
-
55
- sw.default .i.i2445 : ; preds = %BC_SUCCEED
56
- ret i32 0
57
- }
58
-
59
- !llvm.dbg.cu = !{!0 }
60
- !llvm.module.flags = !{!3 , !4 }
61
-
62
- !0 = distinct !DICompileUnit (language: DW_LANG_C_plus_plus_14, file: !1 , isOptimized: true , runtimeVersion: 0 , emissionKind: FullDebug, enums: !2 , retainedTypes: !2 , globals: !2 , imports: !2 , splitDebugInlining: false , nameTableKind: None)
63
- !1 = !DIFile (filename: "../../v8/src/regexp\\r egexp-interpreter.cc" , directory: "." , checksumkind: CSK_MD5, checksum: "ddba353f72137fb1d64b5fc8ee071a9c" )
64
- !2 = !{}
65
- !3 = !{i32 2 , !"CodeView" , i32 1 }
66
- !4 = !{i32 2 , !"Debug Info Version" , i32 3 }
67
- !5 = distinct !DISubprogram (name: "f" , linkageName: "f" , scope: !7 , file: !6 , line: 386 , type: !10 , scopeLine: 391 , flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0 , templateParams: !2 , retainedNodes: !2 )
68
- !6 = !DIFile (filename: "../../v8/src/regexp/regexp-interpreter.cc" , directory: "." , checksumkind: CSK_MD5, checksum: "ddba353f72137fb1d64b5fc8ee071a9c" )
69
- !7 = !DINamespace (scope: !8 )
70
- !8 = !DINamespace (name: "internal" , scope: !9 )
71
- !9 = !DINamespace (name: "v8" , scope: null )
72
- !10 = distinct !DISubroutineType (types: !2 )
1
+ ; REQUIRES: x86-registered-target
2
+ ; RUN: llc < %s | FileCheck %s
3
+
4
+ ; Repro for issue https://reviews.llvm.org/D149367#4619121
5
+ ; Validates that `indirect ptr null` and a jump table can be used in the same function.
6
+
7
+ ; Verify branch labels match what's in the CodeView
8
+ ; CHECK: .Ltmp2:
9
+ ; CHECK-NEXT: jmpq *%{{.*}}
10
+
11
+ ; Verify jump table have the same entry size, base offset and shift as what's in the CodeView
12
+ ; CHECK: {{\.?}}LJTI0_0:
13
+ ; CHECK-NEXT: .long .LBB0_[[#]]-.LJTI0_0
14
+
15
+ ; Verify CodeView
16
+ ; CHECK: .short 4441 # Record kind: S_ARMSWITCHTABLE
17
+ ; CHECK-NEXT: .secrel32 .LJTI0_0 # Base offset
18
+ ; CHECK-NEXT: .secidx .LJTI0_0 # Base section index
19
+ ; CHECK-NEXT: .short 4 # Switch type
20
+ ; CHECK-NEXT: .secrel32 .Ltmp2 # Branch offset
21
+ ; CHECK-NEXT: .secrel32 .LJTI0_0 # Table offset
22
+ ; CHECK-NEXT: .secidx .Ltmp2 # Branch section index
23
+ ; CHECK-NEXT: .secidx .LJTI0_0 # Table section index
24
+ ; CHECK-NEXT: .long 4 # Entries count
25
+ ; CHECK-NOT: .short 4441 # Record kind: S_ARMSWITCHTABLE
26
+
27
+ target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
28
+ target triple = "x86_64-pc-windows-msvc19.34.0"
29
+
30
+ define i32 @f () !dbg !5 {
31
+ entry:
32
+ indirectbr ptr null , [label %BC_SUCCEED ], !dbg !11
33
+
34
+ BC_SUCCEED: ; preds = %entry
35
+ %0 = lshr i64 0 , 0
36
+ switch i64 %0 , label %sw.default.i.i2445 [
37
+ i64 3 , label %sw.bb15.i.i
38
+ i64 1 , label %sw.bb7.i.i
39
+ i64 2 , label %sw.bb11.i.i2444
40
+ i64 0 , label %sw.bb3.i.i
41
+ ]
42
+
43
+ sw.bb3.i.i: ; preds = %BC_SUCCEED
44
+ ret i32 0
45
+
46
+ sw.bb7.i.i: ; preds = %BC_SUCCEED
47
+ ret i32 0
48
+
49
+ sw.bb11.i.i2444 : ; preds = %BC_SUCCEED
50
+ ret i32 0
51
+
52
+ sw.bb15.i.i: ; preds = %BC_SUCCEED
53
+ ret i32 0
54
+
55
+ sw.default .i.i2445 : ; preds = %BC_SUCCEED
56
+ ret i32 0
57
+ }
58
+
59
+ !llvm.dbg.cu = !{!0 }
60
+ !llvm.module.flags = !{!3 , !4 }
61
+
62
+ !0 = distinct !DICompileUnit (language: DW_LANG_C_plus_plus_14, file: !1 , isOptimized: true , runtimeVersion: 0 , emissionKind: FullDebug, enums: !2 , retainedTypes: !2 , globals: !2 , imports: !2 , splitDebugInlining: false , nameTableKind: None)
63
+ !1 = !DIFile (filename: "../../v8/src/regexp\\r egexp-interpreter.cc" , directory: "." , checksumkind: CSK_MD5, checksum: "ddba353f72137fb1d64b5fc8ee071a9c" )
64
+ !2 = !{}
65
+ !3 = !{i32 2 , !"CodeView" , i32 1 }
66
+ !4 = !{i32 2 , !"Debug Info Version" , i32 3 }
67
+ !5 = distinct !DISubprogram (name: "f" , linkageName: "f" , scope: !7 , file: !6 , line: 386 , type: !10 , scopeLine: 391 , flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0 , templateParams: !2 , retainedNodes: !2 )
68
+ !6 = !DIFile (filename: "../../v8/src/regexp/regexp-interpreter.cc" , directory: "." , checksumkind: CSK_MD5, checksum: "ddba353f72137fb1d64b5fc8ee071a9c" )
69
+ !7 = !DINamespace (scope: !8 )
70
+ !8 = !DINamespace (name: "internal" , scope: !9 )
71
+ !9 = !DINamespace (name: "v8" , scope: null )
72
+ !10 = distinct !DISubroutineType (types: !2 )
73
73
!11 = !DILocation (line: 1 , scope: !5 )
0 commit comments