@@ -1347,20 +1347,20 @@ bb3(%16 : $Int32): // Preds: bb1 bb2
13471347}
13481348
13491349// CHECK-LABEL: sil [ossa] @enum_promotion_of_concrete_types
1350- // XHECK : bb0([[INT_PTR:%[0-9]+]]
1351- // XHECK -NEXT: [[ALLOCA1:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1352- // XHECK -NEXT: [[ENUM1:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.none!enumelt
1353- // XHECK -NEXT: store [[ENUM1]] to [trivial] [[ALLOCA1]]
1354- // XHECK -NEXT: [[ALLOCA2:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1355- // XHECK -NEXT: [[INT:%[0-9]+]] = load [trivial] [[INT_PTR]] : $*Builtin.Int1
1356- // XHECK -NEXT: [[ENUM2:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.some!enumelt, [[INT]] : $Builtin.Int1
1357- // XHECK -NEXT: store [[ENUM2]] to [trivial] [[ALLOCA2]] : $*FakeOptional<Builtin.Int1>
1358- // XHECK -NEXT: [[RESULT1:%[0-9]+]] = load [trivial] [[ALLOCA1]]
1359- // XHECK -NEXT: [[RESULT2:%[0-9]+]] = load [trivial] [[ALLOCA2]]
1360- // XHECK -NEXT: [[RESULT:%[0-9]+]] = tuple ([[RESULT1]] : $FakeOptional<Builtin.Int1>, [[RESULT2]] : $FakeOptional<Builtin.Int1>)
1361- // XHECK -NEXT: dealloc_stack
1362- // XHECK -NEXT: dealloc_stack
1363- // XHECK -NEXT: return [[RESULT]]
1350+ // CHECK : bb0([[INT_PTR:%[0-9]+]]
1351+ // CHECK -NEXT: [[ALLOCA1:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1352+ // CHECK -NEXT: [[ENUM1:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.none!enumelt
1353+ // CHECK -NEXT: store [[ENUM1]] to [trivial] [[ALLOCA1]]
1354+ // CHECK -NEXT: [[ALLOCA2:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1355+ // CHECK -NEXT: [[INT:%[0-9]+]] = load [trivial] [[INT_PTR]] : $*Builtin.Int1
1356+ // CHECK -NEXT: [[ENUM2:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.some!enumelt, [[INT]] : $Builtin.Int1
1357+ // CHECK -NEXT: store [[ENUM2]] to [trivial] [[ALLOCA2]] : $*FakeOptional<Builtin.Int1>
1358+ // CHECK -NEXT: [[RESULT1:%[0-9]+]] = load [trivial] [[ALLOCA1]]
1359+ // CHECK -NEXT: [[RESULT2:%[0-9]+]] = load [trivial] [[ALLOCA2]]
1360+ // CHECK -NEXT: [[RESULT:%[0-9]+]] = tuple ([[RESULT1]] : $FakeOptional<Builtin.Int1>, [[RESULT2]] : $FakeOptional<Builtin.Int1>)
1361+ // CHECK -NEXT: dealloc_stack
1362+ // CHECK -NEXT: dealloc_stack
1363+ // CHECK -NEXT: return [[RESULT]]
13641364sil [ossa] @enum_promotion_of_concrete_types : $@convention(thin) (@in Builtin.Int1) -> (FakeOptional<Builtin.Int1>, FakeOptional<Builtin.Int1>) {
13651365bb0(%0 : $*Builtin.Int1):
13661366 %1 = alloc_stack $FakeOptional<Builtin.Int1>
@@ -1384,24 +1384,24 @@ bb0(%0 : $*Builtin.Int1):
13841384}
13851385
13861386// CHECK-LABEL: sil [ossa] @enum_promotion_case2
1387- // XHECK : bb0([[B_PTR:%[0-9]+]]
1388- // XHECK -NEXT: [[ALLOCA:%[0-9]+]] = alloc_stack $FakeOptional<B>
1389- // XHECK -NEXT: [[B_PTR_COPY_FOR_ENUM:%.*]] = copy_value [[B_PTR]]
1387+ // CHECK : bb0([[B_PTR:%[0-9]+]]
1388+ // CHECK -NEXT: [[ALLOCA:%[0-9]+]] = alloc_stack $FakeOptional<B>
1389+ // CHECK -NEXT: [[B_PTR_COPY_FOR_ENUM:%.*]] = copy_value [[B_PTR]]
13901390// This copy is the copy that was between the init_enum_data_addr/inject_enum_addr
1391- // XHECK -NEXT: [[B_PTR_COPY_NOT_OBSTRUCTING:%.*]] = copy_value [[B_PTR]]
1392- // XHECK -NEXT: [[ENUM:%[0-9]+]] = enum $FakeOptional<B>, #FakeOptional.some!enumelt, [[B_PTR_COPY_FOR_ENUM]] : $B
1393- // XHECK -NEXT: store [[ENUM]] to [init] [[ALLOCA]]
1394- // XHECK -NEXT: [[RESULT:%[0-9]+]] = load [take] [[ALLOCA]]
1395- // XHECK -NEXT: dealloc_stack
1396- // XHECK -NEXT: destroy_value [[B_PTR]]
1397- // XHECK -NEXT: br bb1
1398- // XHECK : bb1:
1399- // XHECK -NEXT: // function_ref
1400- // XHECK -NEXT: function_ref
1401- // XHECK -NEXT: apply
1402- // XHECK -NEXT: destroy_value [[B_PTR_COPY_NOT_OBSTRUCTING]]
1403- // XHECK -NEXT: return [[RESULT]]
1404- // XHECK : } // end sil function 'enum_promotion_case2'
1391+ // CHECK -NEXT: [[B_PTR_COPY_NOT_OBSTRUCTING:%.*]] = copy_value [[B_PTR]]
1392+ // CHECK -NEXT: [[ENUM:%[0-9]+]] = enum $FakeOptional<B>, #FakeOptional.some!enumelt, [[B_PTR_COPY_FOR_ENUM]] : $B
1393+ // CHECK -NEXT: store [[ENUM]] to [init] [[ALLOCA]]
1394+ // CHECK -NEXT: [[RESULT:%[0-9]+]] = load [take] [[ALLOCA]]
1395+ // CHECK -NEXT: dealloc_stack
1396+ // CHECK -NEXT: destroy_value [[B_PTR]]
1397+ // CHECK -NEXT: br bb1
1398+ // CHECK : bb1:
1399+ // CHECK -NEXT: // function_ref
1400+ // CHECK -NEXT: function_ref
1401+ // CHECK -NEXT: apply
1402+ // CHECK -NEXT: destroy_value [[B_PTR_COPY_NOT_OBSTRUCTING]]
1403+ // CHECK -NEXT: return [[RESULT]]
1404+ // CHECK : } // end sil function 'enum_promotion_case2'
14051405sil [ossa] @enum_promotion_case2 : $@convention(thin) (@owned B) -> @owned FakeOptional<B> {
14061406bb0(%0 : @owned $B):
14071407 %2 = alloc_stack $FakeOptional<B>
@@ -1428,27 +1428,27 @@ bb1:
14281428
14291429// Negative test corresponding to the previous test.
14301430// CHECK-LABEL: sil [ossa] @no_enum_promotion_of_non_concrete_types
1431- // XHECK : bb0
1432- // XHECK -NEXT: alloc_stack $FakeOptional<T>
1433- // XHECK -NEXT: inject_enum_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.none!enumelt
1434- // XHECK -NEXT: alloc_stack $FakeOptional<T>
1435- // XHECK -NEXT: init_enum_data_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.some!enumelt
1436- // XHECK -NEXT: copy_addr
1437- // XHECK -NEXT: inject_enum_addr
1438- // XHECK -NEXT: cond_br
1439- // XHECK : bb1:
1440- // XHECK -NEXT: copy_addr
1441- // XHECK -NEXT: destroy_addr
1442- // XHECK -NEXT: br bb3
1443- // XHECK : bb2:
1444- // XHECK -NEXT: copy_addr
1445- // XHECK -NEXT: destroy_addr
1446- // XHECK -NEXT: br bb3
1447- // XHECK : bb3
1448- // XHECK -NEXT: tuple
1449- // XHECK -NEXT: dealloc_stack
1450- // XHECK -NEXT: dealloc_stack
1451- // XHECK -NEXT: return
1431+ // CHECK : bb0
1432+ // CHECK -NEXT: alloc_stack $FakeOptional<T>
1433+ // CHECK -NEXT: inject_enum_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.none!enumelt
1434+ // CHECK -NEXT: alloc_stack $FakeOptional<T>
1435+ // CHECK -NEXT: init_enum_data_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.some!enumelt
1436+ // CHECK -NEXT: copy_addr
1437+ // CHECK -NEXT: inject_enum_addr
1438+ // CHECK -NEXT: cond_br
1439+ // CHECK : bb1:
1440+ // CHECK -NEXT: copy_addr
1441+ // CHECK -NEXT: destroy_addr
1442+ // CHECK -NEXT: br bb3
1443+ // CHECK : bb2:
1444+ // CHECK -NEXT: copy_addr
1445+ // CHECK -NEXT: destroy_addr
1446+ // CHECK -NEXT: br bb3
1447+ // CHECK : bb3
1448+ // CHECK -NEXT: tuple
1449+ // CHECK -NEXT: dealloc_stack
1450+ // CHECK -NEXT: dealloc_stack
1451+ // CHECK -NEXT: return
14521452sil [ossa] @no_enum_promotion_of_non_concrete_types : $@convention(thin) <T> (@inout T, Builtin.Int1) -> @out FakeOptional<T> {
14531453bb0(%0 : $*FakeOptional<T>, %1 : $*T, %2 : $Builtin.Int1):
14541454 %3 = alloc_stack $FakeOptional<T>
0 commit comments