Skip to content

Commit 24d2164

Browse files
committed
IRGen: Get some tests passing on Linux
1 parent ed8ca25 commit 24d2164

File tree

2 files changed

+51
-44
lines changed

2 files changed

+51
-44
lines changed

test/IRGen/generic_classes.sil

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
// RUN: rm -rf %t && mkdir %t
2-
// RUN: %build-irgen-test-overlays
3-
// RUN: %target-swift-frontend -sdk %S/Inputs -I %t %s -emit-ir | FileCheck %s
1+
// RUN: %target-swift-frontend %s -emit-ir | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-runtime
42

53
// REQUIRES: CPU=x86_64
6-
// XFAIL: linux
74

85
import Builtin
96
import Swift
10-
import gizmo
117

128
// CHECK: [[ROOTGENERIC:%C15generic_classes11RootGeneric]] = type <{ %swift.refcounted, %Vs5UInt8 }>
139

@@ -32,7 +28,7 @@ import gizmo
3228
// -- generic parameter count, primary count, witness table counts
3329
// CHECK: i32 1, i32 1, i32 0
3430
// CHECK: }
35-
// CHECK: @_TMPC15generic_classes11RootGeneric = global { {{.*}}* } } {
31+
// CHECK: @_TMPC15generic_classes11RootGeneric = global
3632
// -- template fill function
3733
// CHECK: %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_RootGeneric
3834
// -- nominal type descriptor
@@ -75,18 +71,22 @@ import gizmo
7571
// CHECK: @_TMfC15generic_classes14RootNonGeneric = internal global { {{.*}} } {
7672
// CHECK: void (%C15generic_classes14RootNonGeneric*)* @_TFC15generic_classes14RootNonGenericD,
7773
// CHECK: i8** @_TWVBo,
78-
// CHECK: i64 ptrtoint (%objc_class* @_TMmC15generic_classes14RootNonGeneric to i64),
79-
// CHECK: %objc_class* @"OBJC_CLASS_$_SwiftObject",
80-
// CHECK: %swift.opaque* @_objc_empty_cache,
74+
// CHECK-native: i64 0,
75+
// CHECK-native: %swift.type* null,
76+
// CHECK-native: %swift.opaque* null,
77+
// CHECK-objc: i64 ptrtoint (%objc_class* @_TMmC15generic_classes14RootNonGeneric to i64),
78+
// CHECK-objc: %objc_class* @"OBJC_CLASS_$_SwiftObject",
79+
// CHECK-objc: %swift.opaque* @_objc_empty_cache,
8180
// CHECK: %swift.opaque* null,
82-
// CHECK: @_DATA__TtC15generic_classes14RootNonGeneric
81+
// CHECK-native: i64 1,
82+
// CHECK-objc: @_DATA__TtC15generic_classes14RootNonGeneric
8383
// CHECK: i32 33,
8484
// CHECK: i16 7,
8585
// CHECK: i16 0,
8686
// CHECK: {{.*}}* @_TMnC15generic_classes14RootNonGeneric,
8787
// CHECK: }
8888

89-
// CHECK: @_TMPC15generic_classes22GenericInheritsGeneric = global { {{.*}}* } } {
89+
// CHECK: @_TMPC15generic_classes22GenericInheritsGeneric = global
9090
// -- template fill function
9191
// CHECK: %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_GenericInheritsGeneric
9292
// -- RootGeneric vtable
@@ -338,25 +338,25 @@ entry(%c : $RootGeneric<Int32>):
338338
// CHECK: [[B_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY:%.*]], i32 19
339339
// CHECK: store i8* [[T0]], i8** [[B_ADDR]], align 8
340340
// Set up the isa.
341-
// CHECK: [[METADATA_ARRAY:%.*]] = bitcast %swift.type* [[METADATA]] to i8**
342-
// CHECK: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 0
343-
// CHECK: [[T1:%.*]] = bitcast i8** [[T0]] to %objc_class**
344-
// CHECK: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 25
345-
// CHECK: [[METACLASS:%.*]] = bitcast i8** [[T0]] to %objc_class*
346-
// CHECK: store %objc_class* [[METACLASS]], %objc_class** [[T1]], align 8
341+
// CHECK-objc: [[METADATA_ARRAY:%.*]] = bitcast %swift.type* [[METADATA]] to i8**
342+
// CHECK-objc: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 0
343+
// CHECK-objc: [[T1:%.*]] = bitcast i8** [[T0]] to %objc_class**
344+
// CHECK-objc: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 25
345+
// CHECK-objc: [[METACLASS:%.*]] = bitcast i8** [[T0]] to %objc_class*
346+
// CHECK-objc: store %objc_class* [[METACLASS]], %objc_class** [[T1]], align 8
347347
// Set up the instance rodata pointer.
348-
// CHECK: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 4
349-
// CHECK: [[T1:%.*]] = bitcast i8** [[T0]] to i64*
350-
// CHECK: [[RODATA:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 30
351-
// CHECK: [[T2:%.*]] = ptrtoint i8** [[RODATA]] to i64
352-
// CHECK: [[T3:%.*]] = or i64 [[T2]], 1
353-
// CHECK: store i64 [[T3]], i64* [[T1]], align 8
348+
// CHECK-objc: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 4
349+
// CHECK-objc: [[T1:%.*]] = bitcast i8** [[T0]] to i64*
350+
// CHECK-objc: [[RODATA:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 30
351+
// CHECK-objc: [[T2:%.*]] = ptrtoint i8** [[RODATA]] to i64
352+
// CHECK-objc: [[T3:%.*]] = or i64 [[T2]], 1
353+
// CHECK-objc: store i64 [[T3]], i64* [[T1]], align 8
354354
// Set up the class rodata pointer.
355-
// CHECK: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 29
356-
// CHECK: [[T1:%.*]] = bitcast i8** [[T0]] to i64*
357-
// CHECK: [[META_RODATA:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 39
358-
// CHECK: [[T2:%.*]] = ptrtoint i8** [[META_RODATA]] to i64
359-
// CHECK: store i64 [[T2]], i64* [[T1]], align 8
355+
// CHECK-objc: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 29
356+
// CHECK-objc: [[T1:%.*]] = bitcast i8** [[T0]] to i64*
357+
// CHECK-objc: [[META_RODATA:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY]], i32 39
358+
// CHECK-objc: [[T2:%.*]] = ptrtoint i8** [[META_RODATA]] to i64
359+
// CHECK-objc: store i64 [[T2]], i64* [[T1]], align 8
360360
// Initialize our own dependent field offsets.
361361
// CHECK: [[METADATA_ARRAY:%.*]] = bitcast %swift.type* [[METADATA]] to i64*
362362
// CHECK: [[OFFSETS:%.*]] = getelementptr inbounds i64, i64* [[METADATA_ARRAY]], i32 23

test/IRGen/generic_types.swift

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
// RUN: %target-swift-frontend %s -emit-ir | FileCheck %s
1+
// RUN: %target-swift-frontend %s -emit-ir | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-runtime
22

33
// REQUIRES: CPU=x86_64
4-
// XFAIL: linux
54

65
import Swift
76

@@ -11,17 +10,19 @@ import Swift
1110
// CHECK: [[C:%C13generic_types1C]] = type
1211
// CHECK: [[D:%C13generic_types1D]] = type
1312

14-
// CHECK: @_TMPC13generic_types1A = global [[A_METADATA_T:{.*\* } }]] {
13+
// CHECK: @_TMPC13generic_types1A = global
1514
// CHECK: %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_A,
16-
// CHECK: i32 344,
15+
// CHECK-native: i32 160,
16+
// CHECK-objc: i32 344,
1717
// CHECK: i16 1,
1818
// CHECK: i16 16,
1919
// CHECK: [{{[0-9]+}} x i8*] zeroinitializer,
2020
// CHECK: void ([[A]]*)* @_TFC13generic_types1AD,
2121
// CHECK: i8** @_TWVBo,
2222
// CHECK: i64 0,
2323
// CHECK: %swift.type* null,
24-
// CHECK: %swift.opaque* @_objc_empty_cache,
24+
// CHECK-native: %swift.opaque* null,
25+
// CHECK-objc: %swift.opaque* @_objc_empty_cache,
2526
// CHECK: %swift.opaque* null,
2627
// CHECK: i64 1,
2728
// CHECK: i32 3,
@@ -35,17 +36,19 @@ import Swift
3536
// CHECK: void (%swift.opaque*, [[A]]*)* @_TFC13generic_types1A3run
3637
// CHECK: %C13generic_types1A* (i64, %C13generic_types1A*)* @_TFC13generic_types1AcfT1ySi_GS0_x_
3738
// CHECK: }
38-
// CHECK: @_TMPC13generic_types1B = global [[B_METADATA_T:{.* } }]] {
39+
// CHECK: @_TMPC13generic_types1B = global
3940
// CHECK: %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_B,
40-
// CHECK: i32 336,
41+
// CHECK-native: i32 152,
42+
// CHECK-objc: i32 336,
4143
// CHECK: i16 1,
4244
// CHECK: i16 16,
4345
// CHECK: [{{[0-9]+}} x i8*] zeroinitializer,
4446
// CHECK: void ([[B]]*)* @_TFC13generic_types1BD,
4547
// CHECK: i8** @_TWVBo,
4648
// CHECK: i64 0,
4749
// CHECK: %swift.type* null,
48-
// CHECK: %swift.opaque* @_objc_empty_cache,
50+
// CHECK-native: %swift.opaque* null,
51+
// CHECK-objc: %swift.opaque* @_objc_empty_cache,
4952
// CHECK: %swift.opaque* null,
5053
// CHECK: i64 1,
5154
// CHECK: i32 3,
@@ -57,22 +60,24 @@ import Swift
5760
// CHECK: i32 16,
5861
// CHECK: %swift.type* null
5962
// CHECK: }
60-
// CHECK: @_TMPC13generic_types1C = global [[C_METADATA_T:{.*\* } }]] {
63+
// CHECK: @_TMPC13generic_types1C = global
6164
// CHECK: void ([[C]]*)* @_TFC13generic_types1CD,
6265
// CHECK: i8** @_TWVBo,
6366
// CHECK: i64 0,
6467
// CHECK: %swift.type* null,
65-
// CHECK: %swift.opaque* @_objc_empty_cache,
68+
// CHECK-native: %swift.opaque* null,
69+
// CHECK-objc: %swift.opaque* @_objc_empty_cache,
6670
// CHECK: %swift.opaque* null,
6771
// CHECK: i64 1,
6872
// CHECK: void (%swift.opaque*, [[A]]*)* @_TFC13generic_types1A3run
6973
// CHECK: }
70-
// CHECK: @_TMPC13generic_types1D = global [[D_METADATA_T:{.*\* } }]] {
74+
// CHECK: @_TMPC13generic_types1D = global
7175
// CHECK: void ([[D]]*)* @_TFC13generic_types1DD,
7276
// CHECK: i8** @_TWVBo,
7377
// CHECK: i64 0,
7478
// CHECK: %swift.type* null,
75-
// CHECK: %swift.opaque* @_objc_empty_cache,
79+
// CHECK-native: %swift.opaque* null,
80+
// CHECK-objc: %swift.opaque* @_objc_empty_cache,
7681
// CHECK: %swift.opaque* null,
7782
// CHECK: i64 1,
7883
// CHECK: void (%Si*, [[D]]*)* @_TTVFC13generic_types1D3runfSiT_
@@ -82,8 +87,9 @@ import Swift
8287
// CHECK: entry:
8388
// CHECK: [[T0:%.*]] = load i8*, i8** %1
8489
// CHECK: %T = bitcast i8* [[T0]] to %swift.type*
85-
// CHECK: [[SUPER:%.*]] = call %objc_class* @swift_getInitializedObjCClass(%objc_class* @"OBJC_CLASS_$_SwiftObject")
86-
// CHECK: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericClassMetadata(%swift.type_pattern* %0, i8** %1, %objc_class* [[SUPER]])
90+
// CHECK-native: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericClassMetadata(%swift.type_pattern* %0, i8** %1, %objc_class* null)
91+
// CHECK-objc: [[SUPER:%.*]] = call %objc_class* @swift_getInitializedObjCClass(%objc_class* @"OBJC_CLASS_$_SwiftObject")
92+
// CHECK-objc: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericClassMetadata(%swift.type_pattern* %0, i8** %1, %objc_class* [[SUPER]])
8793
// CHECK: [[SELF_ARRAY:%.*]] = bitcast %swift.type* [[METADATA]] to i8**
8894
// CHECK: [[T0:%.*]] = bitcast %swift.type* %T to i8*
8995
// CHECK: [[T1:%.*]] = getelementptr inbounds i8*, i8** [[SELF_ARRAY]], i32 10
@@ -95,8 +101,9 @@ import Swift
95101
// CHECK: entry:
96102
// CHECK: [[T0:%.*]] = load i8*, i8** %1
97103
// CHECK: %T = bitcast i8* [[T0]] to %swift.type*
98-
// CHECK: [[SUPER:%.*]] = call %objc_class* @swift_getInitializedObjCClass(%objc_class* @"OBJC_CLASS_$_SwiftObject")
99-
// CHECK: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericClassMetadata(%swift.type_pattern* %0, i8** %1, %objc_class* [[SUPER]])
104+
// CHECK-native: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericClassMetadata(%swift.type_pattern* %0, i8** %1, %objc_class* null)
105+
// CHECK-objc: [[SUPER:%.*]] = call %objc_class* @swift_getInitializedObjCClass(%objc_class* @"OBJC_CLASS_$_SwiftObject")
106+
// CHECK-objc: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericClassMetadata(%swift.type_pattern* %0, i8** %1, %objc_class* [[SUPER]])
100107
// CHECK: [[SELF_ARRAY:%.*]] = bitcast %swift.type* [[METADATA]] to i8**
101108
// CHECK: [[T0:%.*]] = bitcast %swift.type* %T to i8*
102109
// CHECK: [[T1:%.*]] = getelementptr inbounds i8*, i8** [[SELF_ARRAY]], i32 10

0 commit comments

Comments
 (0)