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
4
2
5
3
// REQUIRES: CPU=x86_64
6
- // XFAIL: linux
7
4
8
5
import Builtin
9
6
import Swift
10
- import gizmo
11
7
12
8
// CHECK: [[ROOTGENERIC:%C15generic_classes11RootGeneric]] = type <{ %swift.refcounted, %Vs5UInt8 }>
13
9
@@ -32,7 +28,7 @@ import gizmo
32
28
// -- generic parameter count, primary count, witness table counts
33
29
// CHECK: i32 1, i32 1, i32 0
34
30
// CHECK: }
35
- // CHECK: @_TMPC15generic_classes11RootGeneric = global { {{.*}}* } } {
31
+ // CHECK: @_TMPC15generic_classes11RootGeneric = global
36
32
// -- template fill function
37
33
// CHECK: %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_RootGeneric
38
34
// -- nominal type descriptor
@@ -75,18 +71,22 @@ import gizmo
75
71
// CHECK: @_TMfC15generic_classes14RootNonGeneric = internal global { {{.*}} } {
76
72
// CHECK: void (%C15generic_classes14RootNonGeneric*)* @_TFC15generic_classes14RootNonGenericD,
77
73
// 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,
81
80
// CHECK: %swift.opaque* null,
82
- // CHECK: @_DATA__TtC15generic_classes14RootNonGeneric
81
+ // CHECK-native: i64 1,
82
+ // CHECK-objc: @_DATA__TtC15generic_classes14RootNonGeneric
83
83
// CHECK: i32 33,
84
84
// CHECK: i16 7,
85
85
// CHECK: i16 0,
86
86
// CHECK: {{.*}}* @_TMnC15generic_classes14RootNonGeneric,
87
87
// CHECK: }
88
88
89
- // CHECK: @_TMPC15generic_classes22GenericInheritsGeneric = global { {{.*}}* } } {
89
+ // CHECK: @_TMPC15generic_classes22GenericInheritsGeneric = global
90
90
// -- template fill function
91
91
// CHECK: %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_GenericInheritsGeneric
92
92
// -- RootGeneric vtable
@@ -338,25 +338,25 @@ entry(%c : $RootGeneric<Int32>):
338
338
// CHECK: [[B_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[METADATA_ARRAY:%.*]], i32 19
339
339
// CHECK: store i8* [[T0]], i8** [[B_ADDR]], align 8
340
340
// 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
347
347
// 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
354
354
// 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
360
360
// Initialize our own dependent field offsets.
361
361
// CHECK: [[METADATA_ARRAY:%.*]] = bitcast %swift.type* [[METADATA]] to i64*
362
362
// CHECK: [[OFFSETS:%.*]] = getelementptr inbounds i64, i64* [[METADATA_ARRAY]], i32 23
0 commit comments