// RUN: %target-build-swift %s -Xfrontend -assume-parsing-unqualified-ownership-sil -Xfrontend -enable-objc-interop -emit-ir -o -
// REQUIRES: executable_test

// Make sure we are not crashing here.

sil_stage canonical

import Builtin
import Swift
import SwiftShims

class Hash {
  init()
  func update()
  func hash()
  @objc deinit
}

final class MD5 : Hash {
  override init()
  @objc deinit
}

sil @_TFC4main4HashcfMS0_FT_S0_ : $@convention(method) (@owned Hash) -> @owned Hash
sil @_TFC4main4HashCfMS0_FT_S0_ : $@convention(thin) (@thick Hash.Type) -> @owned Hash

sil @_TFC4main4Hash6updatefS0_FT_T_ : $@convention(method) (@guaranteed Hash) -> () {
bb0(%0 : $Hash):
  %1 = class_method %0 : $Hash, #Hash.hash!1 : (Hash) -> () -> (), $@convention(method) (@guaranteed Hash) -> () // user: %9
  checked_cast_br [exact] %0 : $Hash to $MD5, bb2, bb3 // id: %2

bb1:                                              // Preds: bb2 bb3
  %3 = tuple ()                                   // user: %4
  return %3 : $()                                 // id: %4

bb2(%5 : $MD5):                                   // Preds: bb0
  br bb1                                          // id: %8

bb3:                                              // Preds: bb0
  %9 = apply %1(%0) : $@convention(method) (@guaranteed Hash) -> ()
  br bb1                                          // id: %10
}

sil @_TFC4main4Hash4hashfS0_FT_T_ : $@convention(method) (@guaranteed Hash) -> ()
sil @_TFC4main3MD5cfMS0_FT_S0_ : $@convention(method) (@owned MD5) -> @owned MD5
sil @_TFC4main3MD5CfMS0_FT_S0_ : $@convention(thin) (@thick MD5.Type) -> @owned MD5

sil_vtable Hash {
  #Hash.init!initializer.1: @_TFC4main4HashcfMS0_FT_S0_	// main.Hash.init (main.Hash.Type)() -> main.Hash
  #Hash.update!1: @_TFC4main4Hash6updatefS0_FT_T_	// main.Hash.update (main.Hash)() -> ()
  #Hash.hash!1: @_TFC4main4Hash4hashfS0_FT_T_	// main.Hash.hash (main.Hash)() -> ()
}

sil_vtable MD5 {
  #Hash.init!initializer.1: @_TFC4main3MD5cfMS0_FT_S0_	// main.MD5.init (main.MD5.Type)() -> main.MD5
  #Hash.update!1: @_TFC4main4Hash6updatefS0_FT_T_	// main.Hash.update (main.Hash)() -> ()
  #Hash.hash!1: @_TFC4main4Hash4hashfS0_FT_T_	// main.Hash.hash (main.Hash)() -> ()
}



