// RUN: %target-sil-opt -module-name Swift -enable-sil-verify-all %s -diagnostics | FileCheck %s

sil_stage raw

import Builtin

enum Never {}
class TheClass {}

// Ensure that when we remove the code after the apply of noreturn
// function nada, we don't fail verification on a dealloc_stack with
// an undef operand, but that we do later remove it in the diagnostics
// passes.

// CHECK-LABEL: sil @unreachable_dealloc_stack
sil @unreachable_dealloc_stack: $@convention(method) (@guaranteed TheClass) -> () {
bb0(%0 : $TheClass):
  %1 = function_ref @nada : $@convention(c) (Builtin.Int32) -> Never
  %2 = integer_literal $Builtin.Int32, 0
  // CHECK: apply{{.*}}
  %3 = apply %1(%2) : $@convention(c) (Builtin.Int32) -> Never
  // CHECK-NEXT: unreachable
  // CHECK-NOT: dealloc_stack
  %4 = alloc_stack $TheClass
  store %0 to %4 : $*TheClass
  br bb1

bb1:
  dealloc_stack %4 : $*TheClass
  %5 = tuple ()
  return %5 : $()
}

// CHECK-LABEL: sil @nada
sil @nada : $@convention(c) (Builtin.Int32) -> Never
