Skip to content

Commit 74183c4

Browse files
Merge pull request #11928 from aschwaighofer/fix_assignArrayWithTake
Fix TypeInfo.assignArrayWithTake
2 parents 9847f6a + 074c822 commit 74183c4

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

lib/IRGen/GenValueWitness.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1329,7 +1329,7 @@ void TypeInfo::assignArrayWithCopyBackToFront(IRGenFunction &IGF, Address dest,
13291329
void TypeInfo::assignArrayWithTake(IRGenFunction &IGF, Address dest,
13301330
Address src, llvm::Value *count,
13311331
SILType T) const {
1332-
if (isBitwiseTakable(ResilienceExpansion::Maximal)) {
1332+
if (isPOD(ResilienceExpansion::Maximal)) {
13331333
llvm::Value *stride = getStride(IGF, T);
13341334
llvm::Value *byteCount = IGF.Builder.CreateNUWMul(stride, count);
13351335
IGF.Builder.CreateMemCpy(dest.getAddress(), src.getAddress(), byteCount,

test/IRGen/builtins.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -494,8 +494,7 @@ func copyPODArray(_ dest: Builtin.RawPointer, src: Builtin.RawPointer, count: Bu
494494
// CHECK: call void @swift_arrayAssignWithCopyNoAlias(
495495
// CHECK: call void @swift_arrayAssignWithCopyFrontToBack(
496496
// CHECK: call void @swift_arrayAssignWithCopyBackToFront(
497-
// CHECK: mul nuw i64 8, %2
498-
// CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* {{.*}}, i64 {{.*}}, i32 8, i1 false)
497+
// CHECK: call void @swift_arrayAssignWithTake(
499498
func copyBTArray(_ dest: Builtin.RawPointer, src: Builtin.RawPointer, count: Builtin.Word) {
500499
Builtin.copyArray(C.self, dest, src, count)
501500
Builtin.takeArrayFrontToBack(C.self, dest, src, count)
@@ -544,10 +543,10 @@ func copyGenArray<T>(_ dest: Builtin.RawPointer, src: Builtin.RawPointer, count:
544543
Builtin.copyArray(T.self, dest, src, count)
545544
Builtin.takeArrayFrontToBack(T.self, dest, src, count)
546545
Builtin.takeArrayBackToFront(T.self, dest, src, count)
547-
Builtin.assignCopyArrayNoAlias(W.self, dest, src, count)
548-
Builtin.assignCopyArrayFrontToBack(W.self, dest, src, count)
549-
Builtin.assignCopyArrayBackToFront(W.self, dest, src, count)
550-
Builtin.assignTakeArray(W.self, dest, src, count)
546+
Builtin.assignCopyArrayNoAlias(T.self, dest, src, count)
547+
Builtin.assignCopyArrayFrontToBack(T.self, dest, src, count)
548+
Builtin.assignCopyArrayBackToFront(T.self, dest, src, count)
549+
Builtin.assignTakeArray(T.self, dest, src, count)
551550
}
552551

553552
// CHECK-LABEL: define hidden {{.*}}void @_T08builtins24conditionallyUnreachableyyF

0 commit comments

Comments
 (0)