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) {
1059
1059
Builder.getBuilderContext (), /* noUndef*/ true );
1060
1060
} else {
1061
1061
auto loadQual = !func->hasOwnership () ? LoadOwnershipQualifier::Unqualified
1062
- : DataAddrInst->getOperand ()-> getType ().isTrivial (*func)
1062
+ : DataAddrInst->getType ().isTrivial (*func)
1063
1063
? LoadOwnershipQualifier::Trivial
1064
1064
: LoadOwnershipQualifier::Take;
1065
1065
enumValue =
Original file line number Diff line number Diff line change @@ -5508,3 +5508,25 @@ bb0(%1 : @owned $Cr):
5508
5508
return %49
5509
5509
}
5510
5510
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