Skip to content

Commit 67f3d34

Browse files
committed
[embedded] Fix fatalError() to produce a trap in Release configurations
1 parent 3db72c6 commit 67f3d34

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

stdlib/public/core/Assert.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,11 @@ public func fatalError(
281281
if _isDebugAssertConfiguration() {
282282
_assertionFailure("Fatal error", message(), file: file, line: line,
283283
flags: _fatalErrorFlags())
284+
} else {
285+
Builtin.condfail_message(true._value,
286+
StaticString("fatal error").unsafeRawPointer)
287+
Builtin.unreachable()
284288
}
285-
_conditionallyUnreachable()
286289
}
287290
#endif
288291

test/embedded/traps-fatalerror-ir.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@ public func test() {
2323

2424
// CHECK-NOMESSAGE: define {{.*}}void @"$s4main4testyyF"(){{.*}} {
2525
// CHECK-NOMESSAGE-NEXT: entry:
26+
// CHECK-NOMESSAGE-NEXT: tail call void asm sideeffect "", "n"(i32 0)
27+
// CHECK-NOMESSAGE-NEXT: tail call void @llvm.trap()
2628
// CHECK-NOMESSAGE-NEXT: unreachable
2729
// CHECK-NOMESSAGE-NEXT: }

0 commit comments

Comments
 (0)