mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
I am doing this separately from the actual change to eliminate the option to make it easier to review.
48 lines
942 B
Plaintext
48 lines
942 B
Plaintext
// RUN: %empty-directory(%t)
|
|
// RUN: not --crash %target-sil-opt -enable-sil-verify-all %s 2> %t/err.txt
|
|
// RUN: %FileCheck %s < %t/err.txt
|
|
|
|
// REQUIRES: asserts
|
|
|
|
// The test in this file is meant to fail the verifier.
|
|
|
|
import Builtin
|
|
|
|
// CHECK: SIL verification failed: return with stack allocs that haven't been deallocated: state.Stack.empty()
|
|
|
|
sil @fail1: $@convention(thin) (Builtin.Int1) -> () {
|
|
bb0(%0 : $Builtin.Int1):
|
|
%2 = integer_literal $Builtin.Int1, -1
|
|
cond_br %0, bb1, bb5
|
|
|
|
// Loop.
|
|
bb1:
|
|
%4 = alloc_stack $Builtin.Int32
|
|
cond_br %0, bb2, bb3
|
|
|
|
bb2:
|
|
dealloc_stack %4 : $*Builtin.Int32
|
|
cond_br %0, bb4, bb1
|
|
|
|
// Cloned loop.
|
|
bb5:
|
|
%6 = alloc_stack $Builtin.Int32
|
|
cond_br %0, bb6, bb3
|
|
|
|
bb6:
|
|
dealloc_stack %6 : $*Builtin.Int32
|
|
cond_br %0, bb4, bb5
|
|
|
|
// Shared partially unreachable exit block.
|
|
bb3:
|
|
cond_br %0, bb7, bb4
|
|
|
|
bb7:
|
|
cond_fail %2 : $Builtin.Int1
|
|
unreachable
|
|
|
|
bb4:
|
|
%10 = tuple ()
|
|
return %10 : $()
|
|
}
|