mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Make the test more resilient to variations in the IR to match what is generated on one of the CI machines. rdar://147091383
48 lines
2.7 KiB
Swift
48 lines
2.7 KiB
Swift
// RUN: %target-swift-frontend -I %S/Inputs -disable-llvm-merge-functions-pass -enable-experimental-cxx-interop -emit-ir %s -Xcc -fignore-exceptions -O | %FileCheck %s
|
|
|
|
import CopyMoveAssignment
|
|
|
|
@inline(never)
|
|
func takeValue<T>(_ x: T) {
|
|
let _ = x
|
|
}
|
|
|
|
@inline(never)
|
|
public func copyAssign() {
|
|
var instance = NonTrivialCopyAndCopyMoveAssign()
|
|
let instance2 = NonTrivialCopyAndCopyMoveAssign()
|
|
instance = instance2
|
|
takeValue(instance2)
|
|
takeValue(instance)
|
|
}
|
|
|
|
// CHECK-LABEL: define {{.*}}copyAssign
|
|
// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[COPY_INSTANCE:.*]])
|
|
// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[COPY_INSTANCE2:.*]])
|
|
// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[COPY_INSTANCE]])
|
|
// CHECK: call {{void|(noundef )?ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1ERKS_|_ZN31NonTrivialCopyAndCopyMoveAssignC2EOS_|_ZN31NonTrivialCopyAndCopyMoveAssignC1ERKS|_ZN31NonTrivialCopyAndCopyMoveAssignC2ERKS_|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@AEBU0@@Z"}}(
|
|
// CHECK-SAME: %[[COPY_INSTANCE]],
|
|
// CHECK-SAME: ptr
|
|
// CHECK-SAME: %[[COPY_INSTANCE2]])
|
|
// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[COPY_INSTANCE2]])
|
|
// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[COPY_INSTANCE]])
|
|
|
|
// CHECK-LABEL: define {{.*}}takeAssign
|
|
// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[MOVE_INSTANCE:.*]])
|
|
// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[MOVE_INSTANCE]])
|
|
// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr {{(nonnull )?}}%[[MOVE_INSTANCE]])
|
|
|
|
// CHECK-LABEL: }
|
|
|
|
// CHECK-LABEL: }
|
|
|
|
@inline(never)
|
|
public func takeAssign() {
|
|
var instance = NonTrivialCopyAndCopyMoveAssign()
|
|
instance = NonTrivialCopyAndCopyMoveAssign()
|
|
takeValue(instance)
|
|
}
|
|
|
|
copyAssign()
|
|
takeAssign()
|