1
1
// 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
6
6
// RUN: %target-codesign %t/Crash
7
7
// RUN: %target-codesign %t/CrashNoDebug
8
8
// RUN: %target-codesign %t/CrashOpt
20
20
// REQUIRES: backtracing
21
21
// REQUIRES: OS=macosx || OS=linux-gnu
22
22
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
- }
51
23
52
24
// CHECK: *** Program crashed: Bad pointer dereference at 0x{{0+}}4 ***
53
25
54
26
// CHECK: Thread 0 {{(".*" )?}}crashed:
55
27
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
62
34
// CHECK-NEXT: 6 [ra] [system] 0x{{[0-9a-f]+}} static Crash.$main() + {{[0-9]+}} in Crash at {{.*}}/<compiler-generated>
63
35
// CHECK-NEXT: 7 [ra] [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in Crash at {{.*}}/Crash.swift
64
36
@@ -72,59 +44,57 @@ struct Crash {
72
44
73
45
// FRIENDLY: Thread 0 {{(".*" )?}}crashed:
74
46
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
76
48
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
80
52
// FRIENDLY-NEXT: | ^
81
- // FRIENDLY-NEXT: 43 | }
82
- // FRIENDLY-NEXT: 44 |
53
+ // FRIENDLY-NEXT: 21 | }
54
+ // FRIENDLY-NEXT: 22 |
83
55
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
85
57
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()
89
61
// FRIENDLY-NEXT: | ^
90
- // FRIENDLY-NEXT: 37 | }
91
- // FRIENDLY-NEXT: 38 |
62
+ // FRIENDLY-NEXT: 15 | }
63
+ // FRIENDLY-NEXT: 16 |
92
64
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
94
66
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()
98
70
// FRIENDLY-NEXT: | ^
99
- // FRIENDLY-NEXT: 33 | }
100
- // FRIENDLY-NEXT: 34 |
71
+ // FRIENDLY-NEXT: 11 | }
72
+ // FRIENDLY-NEXT: 12 |
101
73
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
103
75
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()
107
79
// FRIENDLY-NEXT: | ^
108
- // FRIENDLY-NEXT: 29 | }
109
- // FRIENDLY-NEXT: 30 |
80
+ // FRIENDLY-NEXT: 7 | }
81
+ // FRIENDLY-NEXT: 8 |
110
82
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
112
84
113
- // FRIENDLY: 22|
114
- // FRIENDLY-NEXT: 23| func level1() {
115
- // FRIENDLY-NEXT: 24| level2()
85
+ // FRIENDLY: 1| func level1() {
86
+ // FRIENDLY-NEXT: 2| level2()
116
87
// FRIENDLY-NEXT: | ^
117
- // FRIENDLY-NEXT: 25| }
118
- // FRIENDLY-NEXT: 26|
88
+ // FRIENDLY-NEXT: 3| }
119
89
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
121
91
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()
125
95
// FRIENDLY-NEXT: | ^
126
- // FRIENDLY-NEXT: 49 | }
127
- // FRIENDLY-NEXT: 50 | }
96
+ // FRIENDLY-NEXT: 27 | }
97
+ // FRIENDLY-NEXT: 28 | }
128
98
129
99
// NODEBUG: *** Program crashed: Bad pointer dereference at 0x{{0*}}4 ***
130
100
@@ -149,12 +119,12 @@ struct Crash {
149
119
150
120
// OPTIMIZED: Thread 0 {{(".*" )?}}crashed:
151
121
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
158
128
// OPTIMIZED: {{6|7}} [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in CrashOpt at {{.*}}
159
129
160
130
// OPTIMIZED: Registers:
0 commit comments