Skip to content

Commit 8f6042a

Browse files
martinboehmezoecarver
authored andcommitted
Add additional IR tests for a class without a virtual base class.
1 parent 8416ccf commit 8f6042a

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

test/Interop/Cxx/class/constructors-irgen.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,20 @@ public func createHasVirtualBase() -> HasVirtualBase {
4141
// MICROSOFT_X64: call %struct.HasVirtualBase* @"??0HasVirtualBase@@QEAA@UArgType@@@Z"(%struct.HasVirtualBase* %{{[0-9]+}}, i32 %{{[0-9]+}}, i32 1)
4242
return HasVirtualBase(ArgType())
4343
}
44+
45+
public func createImplicitDefaultConstructor() -> ImplicitDefaultConstructor {
46+
// ITANIUM_X64: define swiftcc i32 @"$ss32createImplicitDefaultConstructorSo0bcD0VyF"()
47+
// ITANIUM_X64-NOT: define
48+
// ITANIUM_X64: call void @_ZN26ImplicitDefaultConstructorC1Ev(%struct.ImplicitDefaultConstructor* noalias %{{[0-9]+}})
49+
//
50+
// ITANIUM_ARM: define protected swiftcc i32 @"$ss32createImplicitDefaultConstructorSo0bcD0VyF"()
51+
// ITANIUM_ARM-NOT: define
52+
// Note `this` return type.
53+
// ITANIUM_ARM: call %struct.ImplicitDefaultConstructor* @_ZN26ImplicitDefaultConstructorC2Ev(%struct.ImplicitDefaultConstructor* %{{[0-9]+}})
54+
//
55+
// MICROSOFT_X64: define dllexport swiftcc i32 @"$ss32createImplicitDefaultConstructorSo0bcD0VyF"()
56+
// MICROSOFT_X64-NOT: define
57+
// Note `this` return type but no implicit "most derived" argument.
58+
// MICROSOFT_X64: call %struct.ImplicitDefaultConstructor* @"??0ImplicitDefaultConstructor@@QEAA@XZ"(%struct.ImplicitDefaultConstructor* %{{[0-9]+}})
59+
return ImplicitDefaultConstructor()
60+
}

0 commit comments

Comments
 (0)