mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[ModuleInterface] Print names for @usableFromInline struct properties (#19465)
Because they weren't 'public' we were treating them as layout-only properties and printing `var _`, but they get referenced in inlinable functions. We need the actual name!
This commit is contained in:
@@ -17,10 +17,10 @@
|
||||
// These two appear out-of-order between run lines
|
||||
|
||||
// CHECK-DAG: [[MYCLASS:%T20PrivateStoredMembers7MyClassC]] = type opaque
|
||||
// CHECK-DAG: [[MYSTRUCT:%T20PrivateStoredMembers8MyStructV]] = type <{ %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V }>
|
||||
// CHECK-DAG: [[MYSTRUCT:%T20PrivateStoredMembers8MyStructV]] = type <{ %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V }>
|
||||
|
||||
// CHECK-MAIN-DAG: [[MYCLASS:%T4main7MyClassC]] = type <{ %swift.refcounted, %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V }>
|
||||
// CHECK-MAIN-DAG: [[MYSTRUCT:%T4main8MyStructV]] = type <{ %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V }>
|
||||
// CHECK-MAIN-DAG: [[MYCLASS:%T4main7MyClassC]] = type <{ %swift.refcounted, %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V }>
|
||||
// CHECK-MAIN-DAG: [[MYSTRUCT:%T4main8MyStructV]] = type <{ %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V, %TSb, [7 x i8], %Ts5Int64V }>
|
||||
|
||||
#if SHOULD_IMPORT
|
||||
import PrivateStoredMembers
|
||||
@@ -29,7 +29,7 @@ import PrivateStoredMembers
|
||||
// CHECK-EXEC: swiftcc void @"$s{{[^ ]+}}8makeUseryyF"() #0 {
|
||||
public func makeUser() {
|
||||
let ptr = UnsafeMutablePointer<MyStruct>.allocate(capacity: 1)
|
||||
// CHECK-EXEC: %.publicEndVar = getelementptr inbounds [[MYSTRUCT]], [[MYSTRUCT]]* %{{[0-9]+}}, i32 0, i32 [[PUBLIC_END_VAR_IDX:9]]
|
||||
// CHECK-EXEC: %.publicEndVar = getelementptr inbounds [[MYSTRUCT]], [[MYSTRUCT]]* %{{[0-9]+}}, i32 0, i32 [[PUBLIC_END_VAR_IDX:12]]
|
||||
// CHECK-EXEC: %.publicEndVar._value = getelementptr inbounds %Ts5Int64V, %Ts5Int64V* %.publicEndVar, i32 0, i32 0
|
||||
// CHECK-EXEC: store i64 4, i64* %.publicEndVar._value
|
||||
ptr.pointee.publicEndVar = 4
|
||||
|
||||
@@ -29,6 +29,14 @@ public struct MyStruct {
|
||||
// RESILIENT-NOT: internal let _: [[BOOL]]{{$}}
|
||||
let internalLet: Bool
|
||||
|
||||
// COMMON-NEXT: @usableFromInline
|
||||
// COMMON-NEXT: internal var ufiVar: [[INT64]]{{$}}
|
||||
@usableFromInline var ufiVar: Int64
|
||||
|
||||
// COMMON-NEXT: @usableFromInline
|
||||
// COMMON-NEXT: internal let ufiLet: [[BOOL]]{{$}}
|
||||
@usableFromInline let ufiLet: Bool
|
||||
|
||||
// CHECK-NEXT: private var _: [[INT64]]{{$}}
|
||||
// RESILIENT-NOT: private var _: [[INT64]]{{$}}
|
||||
private var privateVar: Int64
|
||||
@@ -69,6 +77,14 @@ public class MyClass {
|
||||
// RESILIENT-NOT: internal let _: [[BOOL]]{{$}}
|
||||
let internalLet: Bool = true
|
||||
|
||||
// COMMON-NEXT: @usableFromInline
|
||||
// COMMON-NEXT: internal var ufiVar: [[INT64]]{{$}}
|
||||
@usableFromInline var ufiVar: Int64 = 0
|
||||
|
||||
// COMMON-NEXT: @usableFromInline
|
||||
// COMMON-NEXT: internal let ufiLet: [[BOOL]]{{$}}
|
||||
@usableFromInline let ufiLet: Bool = true
|
||||
|
||||
// CHECK-NEXT: private var _: [[INT64]]{{$}}
|
||||
// RESILIENT-NOT: private var _: [[INT64]]{{$}}
|
||||
private var privateVar: Int64 = 0
|
||||
|
||||
Reference in New Issue
Block a user