1
1
// Target-specific tests for C++ constructor call code generation.
2
2
3
- // RUN: %swift %use_no_opaque_pointers -module-name MySwift -target x86_64-unknown-windows-msvc -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info | %FileCheck %s -check-prefix=MICROSOFT_X64
4
- // RUN: %swift -module-name MySwift -target x86_64-unknown-windows-msvc -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info
3
+ // RUN: %swift -module-name MySwift -target x86_64-unknown-windows-msvc -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info | %FileCheck %s -check-prefix=MICROSOFT_X64
5
4
6
5
// REQUIRES: OS=windows-msvc
7
6
// REQUIRES: CPU=x86_64
@@ -10,18 +9,18 @@ import Constructors
10
9
import TypeClassification
11
10
12
11
public func createHasVirtualBase( ) -> HasVirtualBase {
13
- // MICROSOFT_X64: define dllexport swiftcc void @"$s7MySwift20createHasVirtualBaseSo0{{bcD0VyF|deF0VyF}}"(%TSo14HasVirtualBaseV* noalias nocapture sret({{.*}}) %0)
12
+ // MICROSOFT_X64: define dllexport swiftcc void @"$s7MySwift20createHasVirtualBaseSo0{{bcD0VyF|deF0VyF}}"(ptr noalias nocapture sret({{.*}}) %0)
14
13
// MICROSOFT_X64-NOT: define
15
14
// Note `this` return type and implicit "most derived" argument.
16
- // MICROSOFT_X64: call %struct.HasVirtualBase* @"??0HasVirtualBase@@QEAA@UArgType@@@Z"(%struct.HasVirtualBase* %{{[0-9]+}}, i32 %{{[0-9]+}}, i32 1)
15
+ // MICROSOFT_X64: call ptr @"??0HasVirtualBase@@QEAA@UArgType@@@Z"(ptr %{{[0-9]+}}, i32 %{{[0-9]+}}, i32 1)
17
16
return HasVirtualBase ( ArgType ( ) )
18
17
}
19
18
20
19
public func createImplicitDefaultConstructor( ) -> ImplicitDefaultConstructor {
21
20
// MICROSOFT_X64: define dllexport swiftcc i32 @"$s7MySwift32createImplicitDefaultConstructorSo0{{bcD0VyF|deF0VyF}}"()
22
21
// MICROSOFT_X64-NOT: define
23
22
// Note `this` return type but no implicit "most derived" argument.
24
- // MICROSOFT_X64: call %struct.ImplicitDefaultConstructor* @"??0ImplicitDefaultConstructor@@QEAA@XZ"(%struct.ImplicitDefaultConstructor* %{{[0-9]+}})
23
+ // MICROSOFT_X64: call ptr @"??0ImplicitDefaultConstructor@@QEAA@XZ"(ptr %{{[0-9]+}})
25
24
return ImplicitDefaultConstructor ( )
26
25
}
27
26
@@ -30,11 +29,8 @@ public func createStructWithSubobjectCopyConstructorAndValue() {
30
29
// MICROSOFT_X64: [[MEMBER:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV
31
30
// MICROSOFT_X64: [[OBJ:%.*]] = alloca %TSo42StructWithSubobjectCopyConstructorAndValueV
32
31
// MICROSOFT_X64: [[TMP:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV
33
- // MICROSOFT_X64: [[MEMBER_AS_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue*
34
- // MICROSOFT_X64: call %struct.StructWithCopyConstructorAndValue* @"??0StructWithCopyConstructorAndValue@@QEAA@XZ"(%struct.StructWithCopyConstructorAndValue* [[MEMBER_AS_STRUCT]])
35
- // MICROSOFT_X64: [[TMP_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[TMP]] to %struct.StructWithCopyConstructorAndValue*
36
- // MICROSOFT_X64: [[MEMBER_AS_STRUCT_2:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue*
37
- // MICROSOFT_X64: call %struct.StructWithCopyConstructorAndValue* @"??0StructWithCopyConstructorAndValue@@QEAA@AEBU0@@Z"(%struct.StructWithCopyConstructorAndValue* [[TMP_STRUCT]], %struct.StructWithCopyConstructorAndValue* [[MEMBER_AS_STRUCT_2]])
32
+ // MICROSOFT_X64: call ptr @"??0StructWithCopyConstructorAndValue@@QEAA@XZ"(ptr [[MEMBER]])
33
+ // MICROSOFT_X64: call ptr @"??0StructWithCopyConstructorAndValue@@QEAA@AEBU0@@Z"(ptr [[TMP]], ptr [[MEMBER]])
38
34
// MICROSOFT_X64: ret void
39
35
let member = StructWithCopyConstructorAndValue ( )
40
36
let obj = StructWithSubobjectCopyConstructorAndValue ( member: member)
@@ -43,11 +39,10 @@ public func createStructWithSubobjectCopyConstructorAndValue() {
43
39
public func createTemplatedConstructor( ) {
44
40
// MICROSOFT_X64-LABEL: define dllexport swiftcc void @"$s7MySwift26createTemplatedConstructoryyF"()
45
41
// MICROSOFT_X64: [[OBJ:%.*]] = alloca %TSo20TemplatedConstructorV
46
- // MICROSOFT_X64: [[IVAL:%.*]] = load i32, i32*
47
- // MICROSOFT_X64: [[OBJ_AS_STRUCT:%.*]] = bitcast %TSo20TemplatedConstructorV* [[OBJ]] to %struct.TemplatedConstructor*
48
- // MICROSOFT_X64: call %struct.TemplatedConstructor* @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(%struct.TemplatedConstructor* [[OBJ_AS_STRUCT]], i32 [[IVAL]])
42
+ // MICROSOFT_X64: [[IVAL:%.*]] = load i32, ptr
43
+ // MICROSOFT_X64: call ptr @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(ptr [[OBJ]], i32 [[IVAL]])
49
44
// MICROSOFT_X64: ret void
50
45
51
- // MICROSOFT_X64-LABEL: define {{.*}}%struct.TemplatedConstructor* @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(%struct.TemplatedConstructor* {{.*}}, i32 {{.*}})
46
+ // MICROSOFT_X64-LABEL: define {{.*}}ptr @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(ptr {{.*}}, i32 {{.*}})
52
47
let templated = TemplatedConstructor ( ArgType ( ) )
53
48
}
0 commit comments