mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
54 lines
1.7 KiB
Swift
54 lines
1.7 KiB
Swift
// RUN: %target-swift-frontend %s -emit-ir -O | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize -DINT=i%target-ptrsize
|
|
|
|
// Test to make sure that methods removed by dead code elimination still appear
|
|
// in the vtable in both the nominal type descriptor and class metadata.
|
|
//
|
|
// We should be dropping the implementation, not the actual entry -- it is still
|
|
// there but filled in with a placeholder.
|
|
|
|
public class Class {
|
|
public init() {}
|
|
public func live() {}
|
|
private func dead() {}
|
|
}
|
|
|
|
// CHECK-LABEL: @"$s11dead_method5ClassCMn" ={{( dllexport)?}}{{( protected)?}} constant <{{.*}}> <{
|
|
|
|
// -- metadata accessor
|
|
// CHECK-SAME: "$s11dead_method5ClassCMa"
|
|
|
|
// -- vtable
|
|
// CHECK-SAME: %swift.method_descriptor {
|
|
// CHECK-SAME: i32 {{(1|-835911679)}},
|
|
// CHECK-SAME: @"$s11dead_method5ClassCACycfC"
|
|
// CHECK-SAME: }
|
|
|
|
// CHECK-SAME: %swift.method_descriptor {
|
|
// CHECK-SAME: i32 {{(16|-1609105392)}},
|
|
// CHECK-SAME: @"$s11dead_method5ClassC4liveyyF"
|
|
// CHECK-SAME: }
|
|
|
|
// CHECK-SAME: %swift.method_descriptor { i32 {{(16|-1887436784)}}, i32 0 }
|
|
// CHECK-SAME: }>
|
|
|
|
// CHECK-LABEL: @"$s11dead_method5ClassCMf" = internal global <{{.*}}> <{
|
|
|
|
// -- destructor
|
|
// CHECK-SAME: ptr {{.*}}@"$s11dead_method5ClassCfD{{(.ptrauth)?}}"
|
|
|
|
// -- value witness table
|
|
// CHECK-SAME: ptr {{@"\$sBoWV"|null}},
|
|
|
|
// -- nominal type descriptor
|
|
// CHECK-SAME: @"$s11dead_method5ClassCMn{{(.ptrauth)?}}"
|
|
|
|
// -- ivar destroyer
|
|
// CHECK-SAME: ptr null,
|
|
|
|
// -- vtable
|
|
// CHECK-SAME: ptr {{.*}}@"$s11dead_method5ClassCACycfC{{(.ptrauth)?}}"
|
|
// CHECK-SAME: ptr {{.*}}@"$s11dead_method5ClassC4liveyyF{{(.ptrauth)?}}"
|
|
// CHECK-SAME: ptr {{.*}}@swift_deletedMethodError{{(.ptrauth)?}}
|
|
|
|
// CHECK-SAME: }>
|