@@ -866,3 +866,54 @@ bb5:
866
866
%999 = tuple ()
867
867
return %999 : $()
868
868
}
869
+
870
+ // CHECK-LABEL: @test_init_enum_addr
871
+ // CHECK: ###For MemOp: store %0 to [init] %2 : $*AnyObject
872
+ // CHECK: Stack %1 = alloc_stack $Optional<AnyObject>
873
+ // CHECK: Path: ()
874
+ // CHECK: Exact Uses {
875
+ // CHECK-NEXT: store %0 to [init] %{{.*}} : $*AnyObject
876
+ // CHECK-NEXT: Path: ()
877
+ // CHECK-NEXT: inject_enum_addr %1 : $*Optional<AnyObject>, #Optional.some!enumelt
878
+ // CHECK-NEXT: Path: ()
879
+ // CHECK-NEXT: %{{.*}} = load [copy] %1 : $*Optional<AnyObject>
880
+ // CHECK-NEXT: Path: ()
881
+ // CHECK-NEXT: dealloc_stack %1 : $*Optional<AnyObject>
882
+ // CHECK-NEXT: Path: ()
883
+ // CHECK-NEXT: }
884
+ // CHECK: ###For MemOp: inject_enum_addr %1 : $*Optional<AnyObject>, #Optional.some!enumelt
885
+ // CHECK: Stack %1 = alloc_stack $Optional<AnyObject>
886
+ // CHECK: Path: ()
887
+ // CHECK: Exact Uses {
888
+ // CHECK-NEXT: store %0 to [init] %{{.*}} : $*AnyObject
889
+ // CHECK-NEXT: Path: ()
890
+ // CHECK-NEXT: inject_enum_addr %1 : $*Optional<AnyObject>, #Optional.some!enumelt
891
+ // CHECK-NEXT: Path: ()
892
+ // CHECK-NEXT: %{{.*}} = load [copy] %1 : $*Optional<AnyObject>
893
+ // CHECK-NEXT: Path: ()
894
+ // CHECK-NEXT: dealloc_stack %1 : $*Optional<AnyObject>
895
+ // CHECK-NEXT: Path: ()
896
+ // CHECK-NEXT: }
897
+ // CHECK: ###For MemOp: %5 = load [copy] %1 : $*Optional<AnyObject>
898
+ // CHECK: Stack %1 = alloc_stack $Optional<AnyObject>
899
+ // CHECK: Path: ()
900
+ // CHECK: Exact Uses {
901
+ // CHECK-NEXT: store %0 to [init] %{{.*}} : $*AnyObject
902
+ // CHECK-NEXT: Path: ()
903
+ // CHECK-NEXT: inject_enum_addr %1 : $*Optional<AnyObject>, #Optional.some!enumelt
904
+ // CHECK-NEXT: Path: ()
905
+ // CHECK-NEXT: %{{.*}} = load [copy] %1 : $*Optional<AnyObject>
906
+ // CHECK-NEXT: Path: ()
907
+ // CHECK-NEXT: dealloc_stack %1 : $*Optional<AnyObject>
908
+ // CHECK-NEXT: Path: ()
909
+ // CHECK-NEXT: }
910
+ sil [ossa] @test_init_enum_addr : $@convention(thin) (@owned AnyObject) -> @owned Optional<AnyObject> {
911
+ bb0(%0 : @owned $AnyObject):
912
+ %1 = alloc_stack $Optional<AnyObject>
913
+ %2 = init_enum_data_addr %1 : $*Optional<AnyObject>, #Optional.some!enumelt
914
+ store %0 to [init] %2 : $*AnyObject
915
+ inject_enum_addr %1 : $*Optional<AnyObject>, #Optional.some!enumelt
916
+ %5 = load [copy] %1 : $*Optional<AnyObject>
917
+ dealloc_stack %1 : $*Optional<AnyObject>
918
+ return %5 : $Optional<AnyObject>
919
+ }
0 commit comments