Avatar
// main sil [ossa] @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = metatype $@thick Cat.Type // user: %4 // function_ref Cat.__allocating_init() %3 = function_ref @$s4test3CatCACycfC : $@convention(method) (@thick Cat.Type) -> @owned Cat // user: %4 %4 = apply %3(%2) : $@convention(method) (@thick Cat.Type) -> @owned Cat // users: %22, %8, %5 debug_value %4 : $Cat, let, name "mike" // id: %5 %6 = alloc_box ${ var @sil_unowned Cat }, let, name "tama" // users: %21, %7 %7 = project_box %6 : ${ var @sil_unowned Cat }, 0 // users: %15, %12 %8 = begin_borrow %4 : $Cat // users: %14, %9 %9 = copy_value %8 : $Cat // users: %13, %10 %10 = ref_to_unowned %9 : $Cat to $@sil_unowned Cat // user: %11 %11 = copy_value %10 : $@sil_unowned Cat // user: %12 store %11 to [init] %7 : $*@sil_unowned Cat // id: %12 destroy_value %9 : $Cat // id: %13 end_borrow %8 : $Cat // id: %14 %15 = load_borrow %7 : $*@sil_unowned Cat // users: %17, %16 %16 = strong_copy_unowned_value %15 : $@sil_unowned Cat // users: %20, %19, %18 end_borrow %15 : $@sil_unowned Cat // id: %17 %18 = class_method %16 : $Cat, #Cat.meow : (Cat) -> () -> (), $@convention(method) (@guaranteed Cat) -> () // user: %19 %19 = apply %18(%16) : $@convention(method) (@guaranteed Cat) -> () destroy_value %16 : $Cat // id: %20 destroy_value %6 : ${ var @sil_unowned Cat } // id: %21 destroy_value %4 : $Cat // id: %22 %23 = integer_literal $Builtin.Int32, 0 // user: %24 %24 = struct $Int32 (%23 : $Builtin.Int32) // user: %25 return %24 : $Int32 // id: %25 } // end sil function 'main'