File tree Expand file tree Collapse file tree 2 files changed +23
-1
lines changed
lib/SILOptimizer/SILCombiner Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -1059,7 +1059,7 @@ SILCombiner::visitInjectEnumAddrInst(InjectEnumAddrInst *IEAI) {
10591059 Builder.getBuilderContext (), /* noUndef*/ true );
10601060 } else {
10611061 auto loadQual = !func->hasOwnership () ? LoadOwnershipQualifier::Unqualified
1062- : DataAddrInst->getOperand ()-> getType ().isTrivial (*func)
1062+ : DataAddrInst->getType ().isTrivial (*func)
10631063 ? LoadOwnershipQualifier::Trivial
10641064 : LoadOwnershipQualifier::Take;
10651065 enumValue =
Original file line number Diff line number Diff line change @@ -5508,3 +5508,25 @@ bb0(%1 : @owned $Cr):
55085508 return %49
55095509}
55105510
5511+ enum NT {
5512+ case inline(InlineArray<1, Int>)
5513+ case klass(Klass)
5514+ }
5515+
5516+ sil @get_inlinearray : $@convention(thin) () -> @out InlineArray<1, Int>
5517+
5518+ // CHECK-LABEL: sil shared [ossa] @testTrivialPayloadInNonTrivialEnum :
5519+ // CHECK-NOT: inject_enum_addr
5520+ // CHECK-LABEL: } // end sil function 'testTrivialPayloadInNonTrivialEnum'
5521+ sil shared [ossa] @testTrivialPayloadInNonTrivialEnum : $@convention(thin) () -> @owned NT {
5522+ bb0:
5523+ %0 = alloc_stack $NT
5524+ %1 = init_enum_data_addr %0, #NT.inline!enumelt
5525+ %3 = function_ref @get_inlinearray : $@convention(thin) () -> @out InlineArray<1, Int>
5526+ %4 = apply %3(%1) : $@convention(thin) () -> @out InlineArray<1, Int>
5527+ inject_enum_addr %0, #NT.inline!enumelt
5528+ %6 = load [take] %0
5529+ dealloc_stack %0
5530+ return %6
5531+ }
5532+
You can’t perform that action at this time.
0 commit comments