// RUN: %target-swift-frontend -emit-ir -verify %s sil_stage canonical typealias Void = () struct Empty {} enum SinglePayload { case A(T) case B(Void) case C(Empty) } enum MultiPayload { case A(T) case B(U) case C(Void) case D(Void) case E(Empty) case F(Empty) } sil @project_empty_payloads_single : $@convention(thin) (@in SinglePayload) -> () { entry(%0 : $*SinglePayload): %1 = init_enum_data_addr %0 : $*SinglePayload, #SinglePayload.B!enumelt %2 = init_enum_data_addr %0 : $*SinglePayload, #SinglePayload.C!enumelt %3 = unchecked_take_enum_data_addr %0 : $*SinglePayload, #SinglePayload.B!enumelt %4 = unchecked_take_enum_data_addr %0 : $*SinglePayload, #SinglePayload.C!enumelt return undef : $() } sil @project_empty_payloads_multi : $@convention(thin) (@in MultiPayload) -> () { entry(%0 : $*MultiPayload): %1 = init_enum_data_addr %0 : $*MultiPayload, #MultiPayload.C!enumelt %2 = init_enum_data_addr %0 : $*MultiPayload, #MultiPayload.D!enumelt %3 = init_enum_data_addr %0 : $*MultiPayload, #MultiPayload.E!enumelt %4 = init_enum_data_addr %0 : $*MultiPayload, #MultiPayload.F!enumelt %5 = unchecked_take_enum_data_addr %0 : $*MultiPayload, #MultiPayload.C!enumelt %6 = unchecked_take_enum_data_addr %0 : $*MultiPayload, #MultiPayload.D!enumelt %7 = unchecked_take_enum_data_addr %0 : $*MultiPayload, #MultiPayload.E!enumelt %8 = unchecked_take_enum_data_addr %0 : $*MultiPayload, #MultiPayload.F!enumelt return undef : $() }