blob: 3ffff7308a6f028c495d583225a35b657f2ca971 [file] [log] [blame]
// 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 : $()
}