@@ -369,22 +369,32 @@ entry(%0 : $*Cell<T>):
369
369
// CHECK: [[T_VWT_ADDR:%.*]] = getelementptr inbounds ptr, ptr [[T]], {{i64|i32}} -1
370
370
// CHECK-NEXT: {{%.*}} = load ptr, ptr [[T_VWT_ADDR]]
371
371
// 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 )
373
373
374
374
// PaddedCell<T>
375
375
376
376
// 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 )
378
378
379
379
// SmallVectorBuf<T>
380
380
381
381
// 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)
383
390
384
391
//===----------------------------------------------------------------------===//
385
- // Ensure that 'movesAsLike' is correctly calling the underlying type's move constructor
392
+ // CellThatMovesAsLike<T> Dependent layout metadata initialization
386
393
//===----------------------------------------------------------------------===//
387
394
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
+
388
398
//===----------------------------------------------------------------------===//
389
399
// CellThatMovesAsLike<T> destroy
390
400
//===----------------------------------------------------------------------===//
@@ -613,12 +623,21 @@ entry(%0 : $*Cell<T>):
613
623
// CHECK: ret ptr %dest
614
624
615
625
//===----------------------------------------------------------------------===//
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
617
636
//===----------------------------------------------------------------------===//
618
637
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>")
620
639
// 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
622
641
// CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
623
642
// CHECK: store {{i64|i32}} 0, ptr [[I_ALLOCA]]
624
643
// CHECK: br label %[[COND_BR:.*]]
@@ -631,7 +650,7 @@ entry(%0 : $*Cell<T>):
631
650
// CHECK: [[LOOP_BR]]:
632
651
// CHECK: [[NEW_I:%.*]] = add {{i64|i32}} [[I]], 1
633
652
// 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
635
654
// CHECK-NEXT: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
636
655
// CHECK: [[STRIDE_GEP:%.*]] = getelementptr inbounds %swift.vwtable, ptr {{%.*}}, i32 0, i32 9
637
656
// CHECK-NEXT: [[STRIDE:%.*]] = load {{i64|i32}}, ptr [[STRIDE_GEP]]
@@ -645,12 +664,12 @@ entry(%0 : $*Cell<T>):
645
664
// CHECK: ret void
646
665
647
666
//===----------------------------------------------------------------------===//
648
- // Vector initializeWithTake
667
+ // VectorMovesAsLike initializeWithTake
649
668
//===----------------------------------------------------------------------===//
650
669
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>")
652
671
// 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
654
673
// CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
655
674
// CHECK: store {{i64|i32}} 0, ptr [[I_ALLOCA]]
656
675
// CHECK: br label %[[COND_BR:.*]]
@@ -663,7 +682,7 @@ entry(%0 : $*Cell<T>):
663
682
// CHECK: [[LOOP_BR]]:
664
683
// CHECK: [[NEW_I:%.*]] = add {{i64|i32}} [[I]], 1
665
684
// 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
667
686
// CHECK-NEXT: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
668
687
// CHECK: [[STRIDE_GEP:%.*]] = getelementptr inbounds %swift.vwtable, ptr {{%.*}}, i32 0, i32 9
669
688
// CHECK-NEXT: [[STRIDE:%.*]] = load {{i64|i32}}, ptr [[STRIDE_GEP]]
@@ -678,12 +697,12 @@ entry(%0 : $*Cell<T>):
678
697
// CHECK: ret ptr %dest
679
698
680
699
//===----------------------------------------------------------------------===//
681
- // Vector assignWithTake
700
+ // VectorMovesAsLike assignWithTake
682
701
//===----------------------------------------------------------------------===//
683
702
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>")
685
704
// 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
687
706
// CHECK-NEXT: [[N:%.*]] = load {{i64|i32}}, ptr [[N_GEP]]
688
707
// CHECK: store {{i64|i32}} 0, ptr [[I_ALLOCA]]
689
708
// CHECK: br label %[[COND_BR:.*]]
@@ -696,7 +715,7 @@ entry(%0 : $*Cell<T>):
696
715
// CHECK: [[LOOP_BR]]:
697
716
// CHECK: [[NEW_I:%.*]] = add {{i64|i32}} [[I]], 1
698
717
// 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
700
719
// CHECK-NEXT: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
701
720
// CHECK: [[STRIDE_GEP:%.*]] = getelementptr inbounds %swift.vwtable, ptr {{%.*}}, i32 0, i32 9
702
721
// CHECK-NEXT: [[STRIDE:%.*]] = load {{i64|i32}}, ptr [[STRIDE_GEP]]
0 commit comments