Skip to content

Commit 2543808

Browse files
committed
Add irgen tests
1 parent 9aea080 commit 2543808

File tree

3 files changed

+72
-42
lines changed

3 files changed

+72
-42
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-cxx-interop | %FileCheck %s
2+
3+
import CanonicalTypes
4+
5+
public func testCanonicalTypes() -> Bool {
6+
// multiple typedeffed types with the same canonical type are the same type
7+
// from the typechecking perspective.
8+
let magicNumber = MagicNumber()
9+
var wrappedMagicNumberA = WrappedMagicNumberA(t: magicNumber)
10+
11+
var wrappedMagicNumberB: WrappedMagicNumberA =
12+
WrappedMagicNumberB(t: magicNumber)
13+
return wrappedMagicNumberA.callGetInt() == wrappedMagicNumberB.callGetInt()
14+
}
15+
16+
// CHECK_NOT: __CxxTemplateInst
17+
// CHECK: define {{(protected |dllexport )?}}swiftcc i1 @"$s4main18testCanonicalTypesSbyF"()
18+
// CHECK: %wrappedMagicNumberA = alloca %TSo12MagicWrapperV, align 1
19+
// CHECK: %wrappedMagicNumberB = alloca %TSo12MagicWrapperV, align 1
20+
// CHECK: %wrappedMagicNumberA.t = getelementptr inbounds %TSo12MagicWrapperV, %TSo12MagicWrapperV* %wrappedMagicNumberA, i32 0, i32 0
21+
// CHECK: %wrappedMagicNumberB.t = getelementptr inbounds %TSo12MagicWrapperV, %TSo12MagicWrapperV* %wrappedMagicNumberB, i32 0, i32 0
22+
// CHECK: [[MAGIC_WRAPPER_A:%.*]] = bitcast %TSo12MagicWrapperV* %wrappedMagicNumberA to %struct.MagicWrapper*
23+
// CHECK: call i32 @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|"\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ"}}(%struct.MagicWrapper* [[MAGIC_WRAPPER_A]])
24+
// CHECK: [[MAGIC_WRAPPER_B:%.*]] = bitcast %TSo12MagicWrapperV* %wrappedMagicNumberB to %struct.MagicWrapper*
25+
// CHECK: call i32 @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|"\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ"}}(%struct.MagicWrapper* [[MAGIC_WRAPPER_B]])
26+
27+
// CHECK: define weak_odr{{( dso_local)?}} i32 @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|"\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ"}}(%struct.MagicWrapper* %this)
28+
// CHECK: %this.addr = alloca %struct.MagicWrapper*, align 8
29+
// CHECK: store %struct.MagicWrapper* %this, %struct.MagicWrapper** %this.addr, align 8
30+
// CHECK: %this1 = load %struct.MagicWrapper*, %struct.MagicWrapper** %this.addr, align 8
31+
// CHECK: %t = getelementptr inbounds %struct.MagicWrapper, %struct.MagicWrapper* %this1, i32 0, i32 0
32+
// CHECK: %call = call i32 @{{_ZNK11MagicNumber6getIntEv|"\?getInt@MagicNumber@@QEBAHXZ"}}(%struct.MagicNumber* %t)
33+
// CHECK: %add = add nsw i32 %call, 5
34+
// CHECK: ret i32 %add
35+
36+
// CHECK: define linkonce_odr{{( dso_local)?}} i32 @{{_ZNK11MagicNumber6getIntEv|"\?getInt@MagicNumber@@QEBAHXZ"}}(%struct.MagicNumber* %this)
37+
// CHECK: %this.addr = alloca %struct.MagicNumber*, align 8
38+
// CHECK: store %struct.MagicNumber* %this, %struct.MagicNumber** %this.addr, align 8
39+
// CHECK: %this1 = load %struct.MagicNumber*, %struct.MagicNumber** %this.addr, align 8
40+
// CHECK: ret i32 24
41+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-cxx-interop | %FileCheck %s
2+
3+
import DeclWithDefinition
4+
5+
public func getWrappedMagicNumber() -> CInt {
6+
let magicNumber = MagicNumber()
7+
var wrappedMagicNumber = PartiallyDefinedWrappedMagicNumber(t: magicNumber)
8+
return wrappedMagicNumber.callGetInt()
9+
}
10+
11+
// CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main21getWrappedMagicNumbers5Int32VyF"()
12+
// CHECK: %wrappedMagicNumber = alloca %TSo12MagicWrapperV, align 1
13+
// CHECK: %wrappedMagicNumber.t = getelementptr inbounds %TSo12MagicWrapperV, %TSo12MagicWrapperV* %wrappedMagicNumber, i32 0, i32 0
14+
// CHECK: [[MAGIC_WRAPPER:%.*]] = bitcast %TSo12MagicWrapperV* %wrappedMagicNumber to %struct.MagicWrapper*
15+
// CHECK: call i32 @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|"\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ"}}(%struct.MagicWrapper* [[MAGIC_WRAPPER]])
16+
17+
// CHECK: define weak_odr{{( dso_local)?}} i32 @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|"\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ"}}(%struct.MagicWrapper* %this)
18+
// CHECK: %this.addr = alloca %struct.MagicWrapper*, align 8
19+
// CHECK: store %struct.MagicWrapper* %this, %struct.MagicWrapper** %this.addr, align 8
20+
// CHECK: %this1 = load %struct.MagicWrapper*, %struct.MagicWrapper** %this.addr, align 8
21+
// CHECK: %t = getelementptr inbounds %struct.MagicWrapper, %struct.MagicWrapper* %this1, i32 0, i32 0
22+
// CHECK: %call = call i32 @{{_ZNK11MagicNumber6getIntEv|"\?getInt@MagicNumber@@QEBAHXZ"}}(%struct.MagicNumber* %t)
23+
// CHECK: %add = add nsw i32 %call, 5
24+
// CHECK: ret i32 %add
25+
26+
// CHECK: define linkonce_odr{{( dso_local)?}} i32 @{{_ZNK11MagicNumber6getIntEv|"\?getInt@MagicNumber@@QEBAHXZ"}}(%struct.MagicNumber* %this)
27+
// CHECK: %this.addr = alloca %struct.MagicNumber*, align 8
28+
// CHECK: store %struct.MagicNumber* %this, %struct.MagicNumber** %this.addr, align 8
29+
// CHECK: %this1 = load %struct.MagicNumber*, %struct.MagicNumber** %this.addr, align 8
30+
// CHECK: ret i32 24
31+

test/Interop/Cxx/templates/typedefs-irgen.swift

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)