Skip to content

Commit afd633d

Browse files
committed
nfc: refactor Backtracing/Crash.swift
This test fused both the CHECK directives and the source code into one file, and is sensitive to the line numbers that source code appears on in that file. Thus, any attempts to add new lines to this test would break it. This refactoring moves the source code to a separate file so its line numbers stay stable.
1 parent e49fd88 commit afd633d

File tree

2 files changed

+78
-80
lines changed

2 files changed

+78
-80
lines changed

test/Backtracing/Crash.swift renamed to test/Backtracing/Crash.test

Lines changed: 50 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-build-swift %s -parse-as-library -Onone -g -o %t/Crash
3-
// RUN: %target-build-swift %s -parse-as-library -Onone -o %t/CrashNoDebug
4-
// RUN: %target-build-swift %s -parse-as-library -O -g -o %t/CrashOpt
5-
// RUN: %target-build-swift %s -parse-as-library -O -o %t/CrashOptNoDebug
2+
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -Onone -g -o %t/Crash
3+
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -Onone -o %t/CrashNoDebug
4+
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -O -g -o %t/CrashOpt
5+
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -O -o %t/CrashOptNoDebug
66
// RUN: %target-codesign %t/Crash
77
// RUN: %target-codesign %t/CrashNoDebug
88
// RUN: %target-codesign %t/CrashOpt
@@ -20,45 +20,17 @@
2020
// REQUIRES: backtracing
2121
// REQUIRES: OS=macosx || OS=linux-gnu
2222

23-
func level1() {
24-
level2()
25-
}
26-
27-
func level2() {
28-
level3()
29-
}
30-
31-
func level3() {
32-
level4()
33-
}
34-
35-
func level4() {
36-
level5()
37-
}
38-
39-
func level5() {
40-
print("About to crash")
41-
let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
42-
ptr.pointee = 42
43-
}
44-
45-
@main
46-
struct Crash {
47-
static func main() {
48-
level1()
49-
}
50-
}
5123

5224
// CHECK: *** Program crashed: Bad pointer dereference at 0x{{0+}}4 ***
5325

5426
// CHECK: Thread 0 {{(".*" )?}}crashed:
5527

56-
// CHECK: 0 0x{{[0-9a-f]+}} level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:42:15
57-
// CHECK-NEXT: 1 [ra] 0x{{[0-9a-f]+}} level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:36:3
58-
// CHECK-NEXT: 2 [ra] 0x{{[0-9a-f]+}} level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:32:3
59-
// CHECK-NEXT: 3 [ra] 0x{{[0-9a-f]+}} level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:28:3
60-
// CHECK-NEXT: 4 [ra] 0x{{[0-9a-f]+}} level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:24:3
61-
// CHECK-NEXT: 5 [ra] 0x{{[0-9a-f]+}} static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:48:5
28+
// CHECK: 0 0x{{[0-9a-f]+}} level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:20:15
29+
// CHECK-NEXT: 1 [ra] 0x{{[0-9a-f]+}} level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:14:3
30+
// CHECK-NEXT: 2 [ra] 0x{{[0-9a-f]+}} level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:10:3
31+
// CHECK-NEXT: 3 [ra] 0x{{[0-9a-f]+}} level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:6:3
32+
// CHECK-NEXT: 4 [ra] 0x{{[0-9a-f]+}} level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:2:3
33+
// CHECK-NEXT: 5 [ra] 0x{{[0-9a-f]+}} static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:26:5
6234
// CHECK-NEXT: 6 [ra] [system] 0x{{[0-9a-f]+}} static Crash.$main() + {{[0-9]+}} in Crash at {{.*}}/<compiler-generated>
6335
// CHECK-NEXT: 7 [ra] [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in Crash at {{.*}}/Crash.swift
6436

@@ -72,59 +44,57 @@ struct Crash {
7244

7345
// FRIENDLY: Thread 0 {{(".*" )?}}crashed:
7446

75-
// FRIENDLY: 0 level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:42:15
47+
// FRIENDLY: 0 level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:20:15
7648

77-
// FRIENDLY: 40| print("About to crash")
78-
// FRIENDLY-NEXT: 41| let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
79-
// FRIENDLY-NEXT: 42| ptr.pointee = 42
49+
// FRIENDLY: 18| print("About to crash")
50+
// FRIENDLY-NEXT: 19| let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
51+
// FRIENDLY-NEXT: 20| ptr.pointee = 42
8052
// FRIENDLY-NEXT: | ^
81-
// FRIENDLY-NEXT: 43| }
82-
// FRIENDLY-NEXT: 44|
53+
// FRIENDLY-NEXT: 21| }
54+
// FRIENDLY-NEXT: 22|
8355

84-
// FRIENDLY: 1 level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:36:3
56+
// FRIENDLY: 1 level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:14:3
8557

86-
// FRIENDLY: 34|
87-
// FRIENDLY-NEXT: 35| func level4() {
88-
// FRIENDLY-NEXT: 36| level5()
58+
// FRIENDLY: 12|
59+
// FRIENDLY-NEXT: 13| func level4() {
60+
// FRIENDLY-NEXT: 14| level5()
8961
// FRIENDLY-NEXT: | ^
90-
// FRIENDLY-NEXT: 37| }
91-
// FRIENDLY-NEXT: 38|
62+
// FRIENDLY-NEXT: 15| }
63+
// FRIENDLY-NEXT: 16|
9264

93-
// FRIENDLY: 2 level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:32:3
65+
// FRIENDLY: 2 level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:10:3
9466

95-
// FRIENDLY: 30|
96-
// FRIENDLY-NEXT: 31| func level3() {
97-
// FRIENDLY-NEXT: 32| level4()
67+
// FRIENDLY: 8|
68+
// FRIENDLY-NEXT: 9| func level3() {
69+
// FRIENDLY-NEXT: 10| level4()
9870
// FRIENDLY-NEXT: | ^
99-
// FRIENDLY-NEXT: 33| }
100-
// FRIENDLY-NEXT: 34|
71+
// FRIENDLY-NEXT: 11| }
72+
// FRIENDLY-NEXT: 12|
10173

102-
// FRIENDLY: 3 level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:28:3
74+
// FRIENDLY: 3 level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:6:3
10375

104-
// FRIENDLY: 26|
105-
// FRIENDLY-NEXT: 27| func level2() {
106-
// FRIENDLY-NEXT: 28| level3()
76+
// FRIENDLY: 4|
77+
// FRIENDLY-NEXT: 5| func level2() {
78+
// FRIENDLY-NEXT: 6| level3()
10779
// FRIENDLY-NEXT: | ^
108-
// FRIENDLY-NEXT: 29| }
109-
// FRIENDLY-NEXT: 30|
80+
// FRIENDLY-NEXT: 7| }
81+
// FRIENDLY-NEXT: 8|
11082

111-
// FRIENDLY: 4 level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:24:3
83+
// FRIENDLY: 4 level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:2:3
11284

113-
// FRIENDLY: 22|
114-
// FRIENDLY-NEXT: 23| func level1() {
115-
// FRIENDLY-NEXT: 24| level2()
85+
// FRIENDLY: 1| func level1() {
86+
// FRIENDLY-NEXT: 2| level2()
11687
// FRIENDLY-NEXT: | ^
117-
// FRIENDLY-NEXT: 25| }
118-
// FRIENDLY-NEXT: 26|
88+
// FRIENDLY-NEXT: 3| }
11989

120-
// FRIENDLY: 5 static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:48:5
90+
// FRIENDLY: 5 static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:26:5
12191

122-
// FRIENDLY: 46| struct Crash {
123-
// FRIENDLY-NEXT: 47| static func main() {
124-
// FRIENDLY-NEXT: 48| level1()
92+
// FRIENDLY: 24| struct Crash {
93+
// FRIENDLY-NEXT: 25| static func main() {
94+
// FRIENDLY-NEXT: 26| level1()
12595
// FRIENDLY-NEXT: | ^
126-
// FRIENDLY-NEXT: 49| }
127-
// FRIENDLY-NEXT: 50| }
96+
// FRIENDLY-NEXT: 27| }
97+
// FRIENDLY-NEXT: 28| }
12898

12999
// NODEBUG: *** Program crashed: Bad pointer dereference at 0x{{0*}}4 ***
130100

@@ -149,12 +119,12 @@ struct Crash {
149119

150120
// OPTIMIZED: Thread 0 {{(".*" )?}}crashed:
151121

152-
// OPTIMIZED: 0 [inlined] 0x{{[0-9a-f]+}} level5() in CrashOpt at {{.*}}/Crash.swift:42:15
153-
// OPTIMIZED-NEXT: 1 [inlined] 0x{{[0-9a-f]+}} level4() in CrashOpt at {{.*}}/Crash.swift:36:3
154-
// OPTIMIZED-NEXT: 2 [inlined] 0x{{[0-9a-f]+}} level3() in CrashOpt at {{.*}}/Crash.swift:32:3
155-
// OPTIMIZED-NEXT: 3 [inlined] 0x{{[0-9a-f]+}} level2() in CrashOpt at {{.*}}/Crash.swift:28:3
156-
// OPTIMIZED-NEXT: 4 [inlined] 0x{{[0-9a-f]+}} level1() in CrashOpt at {{.*}}/Crash.swift:24:3
157-
// OPTIMIZED-NEXT: 5 [inlined] 0x{{[0-9a-f]+}} static Crash.main() in CrashOpt at {{.*}}/Crash.swift:48:5
122+
// OPTIMIZED: 0 [inlined] 0x{{[0-9a-f]+}} level5() in CrashOpt at {{.*}}/Crash.swift:20:15
123+
// OPTIMIZED-NEXT: 1 [inlined] 0x{{[0-9a-f]+}} level4() in CrashOpt at {{.*}}/Crash.swift:14:3
124+
// OPTIMIZED-NEXT: 2 [inlined] 0x{{[0-9a-f]+}} level3() in CrashOpt at {{.*}}/Crash.swift:10:3
125+
// OPTIMIZED-NEXT: 3 [inlined] 0x{{[0-9a-f]+}} level2() in CrashOpt at {{.*}}/Crash.swift:6:3
126+
// OPTIMIZED-NEXT: 4 [inlined] 0x{{[0-9a-f]+}} level1() in CrashOpt at {{.*}}/Crash.swift:2:3
127+
// OPTIMIZED-NEXT: 5 [inlined] 0x{{[0-9a-f]+}} static Crash.main() in CrashOpt at {{.*}}/Crash.swift:26:5
158128
// OPTIMIZED: {{6|7}} [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in CrashOpt at {{.*}}
159129

160130
// OPTIMIZED: Registers:

test/Backtracing/Inputs/Crash.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
func level1() {
2+
level2()
3+
}
4+
5+
func level2() {
6+
level3()
7+
}
8+
9+
func level3() {
10+
level4()
11+
}
12+
13+
func level4() {
14+
level5()
15+
}
16+
17+
func level5() {
18+
print("About to crash")
19+
let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
20+
ptr.pointee = 42
21+
}
22+
23+
@main
24+
struct Crash {
25+
static func main() {
26+
level1()
27+
}
28+
}

0 commit comments

Comments
 (0)