33// CHECK: @{{_ZN16WithStaticMember12staticMemberE|"\?staticMember@WithStaticMember@@2HA"}} = external {{(dso_local )?}}global i32, align 4
44// CHECK: @{{_ZN26WithIncompleteStaticMember10selfMemberE|"\?selfMember@WithIncompleteStaticMember@@2V1@A"}} = {{external|linkonce_odr}} {{(dso_local )?}}global %class.WithIncompleteStaticMember, align 4
55
6- //TODO: This test uses only values of static const members, so it does not need
7- //to depend on external definitions. However, our code generation pattern loads
8- //the value dynamically. Instead, we should inline known constants. That would
9- //allow Swift code to even read the value of WithIncompleteStaticMember::notDefined.
10- // CHECK: @{{_ZN21WithConstStaticMember7definedE|"\?defined@WithConstStaticMember@@2HB"}} = {{available_externally|linkonce_odr}} {{(dso_local )?}}constant i32 48, {{(comdat, )?}}align 4
11- // CHECK: @{{_ZN21WithConstStaticMember16definedOutOfLineE|"\?definedOutOfLine@WithConstStaticMember@@2HB"}} = external {{(dso_local )?}}constant i32, align 4
12-
13- // Make sure we remove constexpr globals after all uses have been inlined.
14- // CHECK-NOT: _ZN25WithConstexprStaticMember13definedInlineE
15- // CHECK-NOT: ?definedInline@WithConstexprStaticMember@@2HB
16- // CHECK-NOT: @_ZN25WithConstexprStaticMember20definedInlineWithArgE
17- // CHECK-NOT: @_ZN25WithConstexprStaticMember18definedInlineFloatE
18- // CHECK-NOT: @_ZN25WithConstexprStaticMember23definedInlineFromMethodE
19-
206import StaticMemberVar
217
228public func readStaticMember( ) -> CInt {
@@ -54,55 +40,17 @@ public func writeSelfMember(_ m: WithIncompleteStaticMember) {
5440// public func readNotDefinedConstMember() -> CInt {
5541// return WithConstStaticMember.notDefined
5642// }
57-
5843public func readDefinedConstMember( ) -> CInt {
5944 return WithConstStaticMember . defined
6045}
6146
6247// CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main22readDefinedConstMembers5Int32VyF"() #0
6348// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN21WithConstStaticMember7definedE|"\?defined@WithConstStaticMember@@2HB"}} to %Ts5Int32V*), i32 0, i32 0), align 4
6449// CHECK: ret i32 [[VALUE]]
65-
6650public func readDefinedOutOfLineConstMember( ) -> CInt {
6751 return WithConstStaticMember . definedOutOfLine
6852}
6953
7054// CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main31readDefinedOutOfLineConstMembers5Int32VyF"() #0
7155// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN21WithConstStaticMember16definedOutOfLineE|"\?definedOutOfLine@WithConstStaticMember@@2HB"}} to %Ts5Int32V*), i32 0, i32 0), align 4
72- // CHECK: ret i32 [[VALUE]]
73-
74- public func readConstexprStaticIntMembers( ) {
75- let x = WithConstexprStaticMember . definedInline
76- let y = WithConstexprStaticMember . definedInlineWithArg
77- }
78-
79- // CHECK-LABEL: define {{(protected |dllexport )?}}swiftcc void @"$s4main29readConstexprStaticIntMembersyyF"()
80- // CHECK: call swiftcc i32 @"$sSo25WithConstexprStaticMemberV13definedInlines5Int32VvgZ"()
81- // CHECK: call swiftcc i32 @"$sSo25WithConstexprStaticMemberV013definedInlineA3Args5Int32VvgZ"()
82- // CHECK: ret void
83-
84- // CHECK-LABEL: define linkonce_odr {{.*}}swiftcc i32 @"$sSo25WithConstexprStaticMemberV13definedInlines5Int32VvgZ"()
85- // CHECK-NEXT: entry
86- // CHECK-NEXT: ret i32 139
87-
88- // CHECK-LABEL: define linkonce_odr {{.*}}swiftcc i32 @"$sSo25WithConstexprStaticMemberV013definedInlineA3Args5Int32VvgZ"()
89- // CHECK-NEXT: entry
90- // CHECK-NEXT: ret i32 42
91-
92- public func readConstexprStaticFloatMembers( ) {
93- let x = WithConstexprStaticMember . definedInlineFloat
94- let y = WithConstexprStaticMember . definedInlineFromMethod
95- }
96-
97- // CHECK-LABEL: define {{(protected |dllexport )?}}swiftcc void @"$s4main31readConstexprStaticFloatMembersyyF"()
98- // CHECK: call swiftcc float @"$sSo25WithConstexprStaticMemberV18definedInlineFloatSfvgZ"()
99- // CHECK: call swiftcc float @"$sSo25WithConstexprStaticMemberV23definedInlineFromMethodSfvgZ"()
100- // CHECK: ret void
101-
102- // CHECK-LABEL: define linkonce_odr {{.*}}swiftcc float @"$sSo25WithConstexprStaticMemberV18definedInlineFloatSfvgZ"()
103- // CHECK-NEXT: entry
104- // CHECK-NEXT: ret float 1.390000e+02
105-
106- // CHECK-LABEL: define linkonce_odr {{.*}}swiftcc float @"$sSo25WithConstexprStaticMemberV23definedInlineFromMethodSfvgZ"()
107- // CHECK-NEXT: entry
108- // CHECK-NEXT: ret float 4.200000e+01
56+ // CHECK: ret i32 [[VALUE]]
0 commit comments