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
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:
0 commit comments