@@ -369,22 +369,32 @@ entry(%0 : $*Cell<T>):
369369// CHECK: [[T_VWT_ADDR:%.*]] = getelementptr inbounds ptr, ptr [[T]], {{i64|i32}} -1
370370// CHECK-NEXT: {{%.*}} = load ptr, ptr [[T_VWT_ADDR]]
371371// CHECK: [[T_LAYOUT:%.*]] = getelementptr inbounds ptr, ptr {{%.*}}, i32 8
372- // CHECK-NEXT: call void @swift_initRawStructMetadata(ptr %"Cell<T>", {{i64|i32}} 0, ptr [[T_LAYOUT]], {{i64|i32}} -1 )
372+ // CHECK-NEXT: call void @swift_initRawStructMetadata(ptr %"Cell<T>", {{i64|i32}} 0, ptr [[T_LAYOUT]], {{i64|i32}} 0, {{i64|i32}} 0 )
373373
374374// PaddedCell<T>
375375
376376// CHECK-LABEL: define {{.*}} swiftcc %swift.metadata_response @"$s{{[A-Za-z0-9_]*}}10PaddedCellVMr"(ptr %"PaddedCell<T>", ptr {{.*}}, ptr {{.*}})
377- // CHECK: call void @swift_initRawStructMetadata(ptr %"PaddedCell<T>", {{i64|i32}} 0, ptr {{%.*}}, {{i64|i32}} 1)
377+ // CHECK: call void @swift_initRawStructMetadata(ptr %"PaddedCell<T>", {{i64|i32}} 0, ptr {{%.*}}, {{i64|i32}} 1, {{i64|i32}} 1 )
378378
379379// SmallVectorBuf<T>
380380
381381// CHECK-LABEL: define {{.*}} swiftcc %swift.metadata_response @"$s{{[A-Za-z0-9_]*}}14SmallVectorBufVMr"(ptr %"SmallVectorBuf<T>", ptr {{.*}}, ptr {{.*}})
382- // CHECK: call void @swift_initRawStructMetadata(ptr %"SmallVectorBuf<T>", {{i64|i32}} 0, ptr {{%.*}}, {{i64|i32}} 8)
382+ // CHECK: call void @swift_initRawStructMetadata(ptr %"SmallVectorBuf<T>", {{i64|i32}} 0, ptr {{%.*}}, {{i64|i32}} 8, {{i64|i32}} 1)
383+
384+ // Vector<T, N>
385+
386+ // CHECK-LABEL: define {{.*}} swiftcc %swift.metadata_response @"$s{{[A-Za-z0-9_]*}}6VectorVMr"(ptr %"Vector<T, N>", ptr {{.*}}, ptr {{.*}})
387+ // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"Vector<T, N>", {{i64|i32}} 3
388+ // CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
389+ // CHECK: call void @swift_initRawStructMetadata(ptr %"Vector<T, N>", {{i64|i32}} 0, ptr {{%.*}}, {{i64|i32}} [[N]], {{i64|i32}} 1)
383390
384391//===----------------------------------------------------------------------===//
385- // Ensure that 'movesAsLike' is correctly calling the underlying type's move constructor
392+ // CellThatMovesAsLike<T> Dependent layout metadata initialization
386393//===----------------------------------------------------------------------===//
387394
395+ // CHECK-LABEL: define {{.*}} swiftcc %swift.metadata_response @"$s{{[A-Za-z0-9_]*}}19CellThatMovesAsLikeVMr"(ptr %"CellThatMovesAsLike<T>", ptr {{.*}}, ptr {{.*}})
396+ // CHECK: call void @swift_initRawStructMetadata(ptr %"CellThatMovesAsLike<T>", {{i64|i32}} 0, ptr {{%.*}}, {{i64|i32}} 0, {{i64|i32}} 2)
397+
388398//===----------------------------------------------------------------------===//
389399// CellThatMovesAsLike<T> destroy
390400//===----------------------------------------------------------------------===//
@@ -613,12 +623,21 @@ entry(%0 : $*Cell<T>):
613623// CHECK: ret ptr %dest
614624
615625//===----------------------------------------------------------------------===//
616- // Vector destroy
626+ // VectorMovesAsLike Dependent layout metadata initialization
627+ //===----------------------------------------------------------------------===//
628+
629+ // CHECK-LABEL: define {{.*}} swiftcc %swift.metadata_response @"$s{{[A-Za-z0-9_]*}}17VectorMovesAsLikeVMr"(ptr %"VectorMovesAsLike<T, N>", ptr {{.*}}, ptr {{.*}})
630+ // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 3
631+ // CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
632+ // CHECK: call void @swift_initRawStructMetadata(ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 0, ptr {{%.*}}, {{i64|i32}} [[N]], {{i64|i32}} 3)
633+
634+ //===----------------------------------------------------------------------===//
635+ // VectorMovesAsLike destroy
617636//===----------------------------------------------------------------------===//
618637
619- // CHECK-LABEL: define {{.*}} void @"$s10raw_layout17VectorMovesAsLikeVwxx"(ptr {{.*}} %object, ptr %"VectorMovesAsLike<T, let N>")
638+ // CHECK-LABEL: define {{.*}} void @"$s10raw_layout17VectorMovesAsLikeVwxx"(ptr {{.*}} %object, ptr %"VectorMovesAsLike<T, N>")
620639// CHECK: [[I_ALLOCA:%.*]] = alloca {{i64|i32}}
621- // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"VectorMovesAsLike<T, let N>", {{i64|i32}} 3
640+ // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 3
622641// CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
623642// CHECK: store {{i64|i32}} 0, ptr [[I_ALLOCA]]
624643// CHECK: br label %[[COND_BR:.*]]
@@ -631,7 +650,7 @@ entry(%0 : $*Cell<T>):
631650// CHECK: [[LOOP_BR]]:
632651// CHECK: [[NEW_I:%.*]] = add {{i64|i32}} [[I]], 1
633652// CHECK: store {{i64|i32}} [[NEW_I]], ptr [[I_ALLOCA]]
634- // CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr %"VectorMovesAsLike<T, let N>", {{i64|i32}} 2
653+ // CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 2
635654// CHECK-NEXT: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
636655// CHECK: [[STRIDE_GEP:%.*]] = getelementptr inbounds %swift.vwtable, ptr {{%.*}}, i32 0, i32 9
637656// CHECK-NEXT: [[STRIDE:%.*]] = load {{i64|i32}}, ptr [[STRIDE_GEP]]
@@ -645,12 +664,12 @@ entry(%0 : $*Cell<T>):
645664// CHECK: ret void
646665
647666//===----------------------------------------------------------------------===//
648- // Vector initializeWithTake
667+ // VectorMovesAsLike initializeWithTake
649668//===----------------------------------------------------------------------===//
650669
651- // CHECK-LABEL: define {{.*}} ptr @"$s10raw_layout17VectorMovesAsLikeVwtk"(ptr {{.*}} %dest, ptr {{.*}} %src, ptr %"VectorMovesAsLike<T, let N>")
670+ // CHECK-LABEL: define {{.*}} ptr @"$s10raw_layout17VectorMovesAsLikeVwtk"(ptr {{.*}} %dest, ptr {{.*}} %src, ptr %"VectorMovesAsLike<T, N>")
652671// CHECK: [[I_ALLOCA:%.*]] = alloca {{i64|i32}}
653- // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"VectorMovesAsLike<T, let N>", {{i64|i32}} 3
672+ // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 3
654673// CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
655674// CHECK: store {{i64|i32}} 0, ptr [[I_ALLOCA]]
656675// CHECK: br label %[[COND_BR:.*]]
@@ -663,7 +682,7 @@ entry(%0 : $*Cell<T>):
663682// CHECK: [[LOOP_BR]]:
664683// CHECK: [[NEW_I:%.*]] = add {{i64|i32}} [[I]], 1
665684// CHECK: store {{i64|i32}} [[NEW_I]], ptr [[I_ALLOCA]]
666- // CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr %"VectorMovesAsLike<T, let N>", {{i64|i32}} 2
685+ // CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 2
667686// CHECK-NEXT: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
668687// CHECK: [[STRIDE_GEP:%.*]] = getelementptr inbounds %swift.vwtable, ptr {{%.*}}, i32 0, i32 9
669688// CHECK-NEXT: [[STRIDE:%.*]] = load {{i64|i32}}, ptr [[STRIDE_GEP]]
@@ -678,12 +697,12 @@ entry(%0 : $*Cell<T>):
678697// CHECK: ret ptr %dest
679698
680699//===----------------------------------------------------------------------===//
681- // Vector assignWithTake
700+ // VectorMovesAsLike assignWithTake
682701//===----------------------------------------------------------------------===//
683702
684- // CHECK-LABEL: define {{.*}} ptr @"$s10raw_layout17VectorMovesAsLikeVwta"(ptr {{.*}} %dest, ptr {{.*}} %src, ptr %"VectorMovesAsLike<T, let N>")
703+ // CHECK-LABEL: define {{.*}} ptr @"$s10raw_layout17VectorMovesAsLikeVwta"(ptr {{.*}} %dest, ptr {{.*}} %src, ptr %"VectorMovesAsLike<T, N>")
685704// CHECK: [[I_ALLOCA:%.*]] = alloca {{i64|i32}}
686- // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"VectorMovesAsLike<T, let N>", {{i64|i32}} 3
705+ // CHECK: [[N_GEP:%.*]] = getelementptr inbounds {{i64|i32}}, ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 3
687706// CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
688707// CHECK: store {{i64|i32}} 0, ptr [[I_ALLOCA]]
689708// CHECK: br label %[[COND_BR:.*]]
@@ -696,7 +715,7 @@ entry(%0 : $*Cell<T>):
696715// CHECK: [[LOOP_BR]]:
697716// CHECK: [[NEW_I:%.*]] = add {{i64|i32}} [[I]], 1
698717// CHECK: store {{i64|i32}} [[NEW_I]], ptr [[I_ALLOCA]]
699- // CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr %"VectorMovesAsLike<T, let N>", {{i64|i32}} 2
718+ // CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr %"VectorMovesAsLike<T, N>", {{i64|i32}} 2
700719// CHECK-NEXT: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
701720// CHECK: [[STRIDE_GEP:%.*]] = getelementptr inbounds %swift.vwtable, ptr {{%.*}}, i32 0, i32 9
702721// CHECK-NEXT: [[STRIDE:%.*]] = load {{i64|i32}}, ptr [[STRIDE_GEP]]
0 commit comments