Slide 30
Slide 30 text
ࢀরΧϯλফඅ͠ͳ͍ͷͰಉ͡ͳͷͰ
࣮ weak ΊͬͪΌ͘ͳΔ
…
%4 = apply %3(%2) : $@convention(method) (@thick Cat.Type) -> @owned Cat // users: %39, %8, %7, %5
debug_value %4 : $Cat, let, name "mike" // id: %5
%6 = alloc_stack $@sil_weak Optional, var, name "tama" // users: %38, %37, %9, %11
strong_retain %4 : $Cat // id: %7
%8 = enum $Optional, #Optional.some!enumelt, %4 : $Cat // users: %10, %9
store_weak %8 to [initialization] %6 : $*@sil_weak Optional // id: %9
release_value %8 : $Optional // id: %10
%11 = begin_access [read] [static] %6 : $*@sil_weak Optional // users: %28, %21, %13
%12 = alloc_stack $Optional // users: %14, %32, %27, %24, %20, %19, %17
%13 = load_weak %11 : $*@sil_weak Optional // user: %14
store %13 to %12 : $*Optional // id: %14
%15 = integer_literal $Builtin.Int1, -1 // user: %17
%16 = integer_literal $Builtin.Int1, 0 // user: %17
%17 = select_enum_addr %12 : $*Optional, case #Optional.some!enumelt: %15, default %16 : $Builtin.Int1 // user: %18
cond_br %17, bb2, bb1 // id: %18
bb1: // Preds: bb0
destroy_addr %12 : $*Optional // id: %19
dealloc_stack %12 : $*Optional // id: %20
end_access %11 : $*@sil_weak Optional // id: %21
%22 = enum $Optional<()>, #Optional.none!enumelt // user: %23
br bb3(%22 : $Optional<()>) // id: %23
…
weak/unownedͱͷൺֱʁ