From 79894ff461b0a85f3004cfcd3fd21f98c57e5608 Mon Sep 17 00:00:00 2001 From: Arnold Schwaighofer Date: Mon, 3 Jul 2023 02:36:53 -0700 Subject: [PATCH] Fix test/Interop with opaque pointers --- .../emit-called-inline-function-irgen.swift | 8 +-- .../C/struct/struct-decl-context-irgen.swift | 15 ++--- .../constructors-copy-irgen-macosx.swift | 13 ++-- .../constructors-copy-irgen-windows.swift | 13 ++-- .../Cxx/class/constructors-irgen-macosx.swift | 23 +++---- .../class/constructors-irgen-windows.swift | 23 +++---- .../Cxx/class/constructors-objc-irgen.swift | 8 +-- .../class/copy-move-assignment-irgen.swift | 23 ++++--- .../class/destructors-correct-abi-irgen.swift | 6 +- ...structors-non-trivial-implicit-irgen.swift | 7 +- .../constructor-calls-method-irgen.swift | 5 +- ...alls-method-from-nested-struct-irgen.swift | 5 +- .../method-calls-method-irgen.swift | 5 +- .../Cxx/class/memory-layout-silgen.swift | 5 +- .../class/protocol-conformance-irgen.swift | 9 ++- .../Cxx/class/returns-large-class-irgen.swift | 5 +- ...ype-classification-non-trivial-irgen.swift | 64 ++++++++----------- ...objc-trap-on-exception-irgen-itanium.swift | 9 ++- .../trap-on-exception-irgen-itanium.swift | 54 ++++++++-------- .../trap-on-exception-irgen-msvc.swift | 3 +- .../Cxx/extern-var/extern-var-irgen.swift | 15 ++--- .../base-class-layout-irgen.swift | 7 +- .../foreign-reference/move-only-irgen.swift | 23 +++---- .../Cxx/foreign-reference/pod-irgen.swift | 25 ++++---- .../foreign-reference/singleton-irgen.swift | 24 +++---- .../unimportable-member-layout-irgen.swift | 19 +++--- .../Interop/Cxx/namespace/classes-irgen.swift | 15 ++--- .../Cxx/namespace/free-functions-irgen.swift | 21 +++--- .../Cxx/namespace/templates-irgen.swift | 17 +++-- .../Cxx/operators/member-inline-irgen.swift | 51 ++++++++------- .../operators/member-out-of-line-irgen.swift | 7 +- .../Cxx/reference/reference-irgen.swift | 23 ++++--- .../inline-static-member-var-irgen.swift | 9 ++- .../Cxx/static/static-member-func-irgen.swift | 7 +- .../Cxx/static/static-member-var-irgen.swift | 15 ++--- .../Interop/Cxx/static/static-var-irgen.swift | 25 ++++---- ...ss-template-instantiation-demangling.swift | 5 +- ...plate-uninstantiatable-members-irgen.swift | 17 +++-- .../Cxx/templates/mangling-irgen.swift | 7 +- .../anonymous-union-partly-invalid.swift | 8 +-- .../copy-constructors-irgen.swift | 11 +--- ...custom-destructors-non-virtual-irgen.swift | 14 ++-- .../custom-destructors-virtual-irgen.swift | 5 +- .../witness-lifetime-operations-irgen.swift | 37 ++++++----- 44 files changed, 310 insertions(+), 400 deletions(-) diff --git a/test/Interop/C/function/emit-called-inline-function-irgen.swift b/test/Interop/C/function/emit-called-inline-function-irgen.swift index e995ebd9088ef..6450ee734e9ee 100644 --- a/test/Interop/C/function/emit-called-inline-function-irgen.swift +++ b/test/Interop/C/function/emit-called-inline-function-irgen.swift @@ -5,10 +5,8 @@ // Swift. // RUN: %empty-directory(%t) -// RUN: %target-swift-frontend %use_no_opaque_pointers %s -I %S/Inputs -Xcc -std=c99 -emit-ir -o - | %FileCheck %s -check-prefix C99 --implicit-check-not notCalled -// RUN: %target-swift-frontend %s -I %S/Inputs -Xcc -std=c99 -emit-ir -o - -// RUN: %target-swiftxx-frontend %use_no_opaque_pointers %s -I %S/Inputs -emit-ir -o - | %FileCheck %s -check-prefix CXX --implicit-check-not notCalled -// RUN: %target-swiftxx-frontend %s -I %S/Inputs -emit-ir -o - +// RUN: %target-swift-frontend %s -I %S/Inputs -Xcc -std=c99 -emit-ir -o - | %FileCheck %s -check-prefix C99 --implicit-check-not notCalled +// RUN: %target-swiftxx-frontend %s -I %S/Inputs -emit-ir -o - | %FileCheck %s -check-prefix CXX --implicit-check-not notCalled import EmitCalledInlineFunction @@ -17,7 +15,7 @@ import EmitCalledInlineFunction // CXX-DAG: define {{.*}}i32 @{{_Z15calledFromSwiftv|"\?calledFromSwift@@YAHXZ"}}() // CXX-DAG: define {{.*}}i32 @{{_Z18calledTransitivelyv|"\?calledTransitively@@YAHXZ"}}() -// CXX-DAG: define {{.*}}i32 @{{_ZN1C32memberFunctionCalledTransitivelyEv|"\?memberFunctionCalledTransitively@C@@QEAAHXZ"}}(%class.C* {{.*}}) +// CXX-DAG: define {{.*}}i32 @{{_ZN1C32memberFunctionCalledTransitivelyEv|"\?memberFunctionCalledTransitively@C@@QEAAHXZ"}}(ptr {{.*}}) // CXX-DAG: define {{.*}}i32 @{{_Z29calledTransitivelyFromVarInitv|"\?calledTransitivelyFromVarInit@@YAHXZ"}}() calledFromSwift() diff --git a/test/Interop/C/struct/struct-decl-context-irgen.swift b/test/Interop/C/struct/struct-decl-context-irgen.swift index ba15b830b2cc1..7eef58348f7da 100644 --- a/test/Interop/C/struct/struct-decl-context-irgen.swift +++ b/test/Interop/C/struct/struct-decl-context-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs %s | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs %s +// RUN: %target-swift-emit-ir -I %S/Inputs %s | %FileCheck %s // This test checks that structs that are imported from a C module are mangled // in Swift names as if they are declared in the global namespace, even when @@ -49,7 +48,7 @@ public func take(_: StructTypedefTag4) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo21StructNestedComplete4VF"({{.*}}) public func take(_: StructNestedComplete4) {} -// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo17StructTypedefTag4VGF"(i8* %0) +// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo17StructTypedefTag4VGF"(ptr %0) public func take(_: StructTypedefName4) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo27StructNestedCompletedLater4VF"({{.*}}) @@ -58,7 +57,7 @@ public func take(_: StructNestedCompletedLater4) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo21StructNestedComplete5VF"({{.*}}) public func take(_: StructNestedComplete5) {} -// CHECK-LABEL: define {{.*}} void @"$s4main4takeyys13OpaquePointerVF"(i8* %0) +// CHECK-LABEL: define {{.*}} void @"$s4main4takeyys13OpaquePointerVF"(ptr %0) public func take(_: StructTypedefName5) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo27StructNestedCompletedLater5VF"({{.*}}) @@ -70,7 +69,7 @@ public func take(_: StructTypedefName6) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo21StructNestedComplete6VF"({{.*}}) public func take(_: StructNestedComplete6) {} -// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo18StructTypedefName6aGF"(i8* %0) +// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo18StructTypedefName6aGF"(ptr %0) public func take(_: StructTypedefName6Ptr) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo27StructNestedCompletedLater6VF"({{.*}}) @@ -82,7 +81,7 @@ public func take(_: StructTypedefName7) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo21StructNestedComplete7VF"({{.*}}) public func take(_: StructNestedComplete7) {} -// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo18StructTypedefName7aGF"(i8* %0) +// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo18StructTypedefName7aGF"(ptr %0) public func take(_: StructTypedefName7Ptr) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo27StructNestedCompletedLater7VF"({{.*}}) @@ -94,10 +93,10 @@ public func take(_: StructTypedefName8) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo21StructNestedComplete8VF"({{.*}}) public func take(_: StructNestedComplete8) {} -// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo18StructTypedefName8aGF"(i8* %0) +// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySo18StructTypedefName8aGF"(ptr %0) public func take(_: StructTypedefName8Ptr) {} -// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySpySo18StructTypedefName8aGSgGF"(i8* %0) +// CHECK-LABEL: define {{.*}} void @"$s4main4takeyySpySpySo18StructTypedefName8aGSgGF"(ptr %0) public func take(_: StructTypedefName8PtrPtr) {} // CHECK-LABEL: define {{.*}} void @"$s4main4takeyySo27StructNestedCompletedLater8VF"({{.*}}) diff --git a/test/Interop/Cxx/class/constructors-copy-irgen-macosx.swift b/test/Interop/Cxx/class/constructors-copy-irgen-macosx.swift index bfa6b00f1bbe3..9c98879c7f837 100644 --- a/test/Interop/Cxx/class/constructors-copy-irgen-macosx.swift +++ b/test/Interop/Cxx/class/constructors-copy-irgen-macosx.swift @@ -1,7 +1,6 @@ // Target-specific tests for C++ copy constructor code generation. -// RUN: %swift %use_no_opaque_pointers -module-name MySwift -target x86_64-apple-macosx10.9 -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info -Xcc -fignore-exceptions | %FileCheck %s -check-prefix=ITANIUM_X64 -// RUN: %swift -module-name MySwift -target x86_64-apple-macosx10.9 -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info -Xcc -fignore-exceptions +// RUN: %swift -module-name MySwift -target x86_64-apple-macosx10.9 -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info -Xcc -fignore-exceptions | %FileCheck %s -check-prefix=ITANIUM_X64 // REQUIRES: OS=macosx // REQUIRES: CPU=x86_64 @@ -11,13 +10,9 @@ import Constructors import TypeClassification // ITANIUM_X64-LABEL: define swiftcc void @"$s7MySwift35copyWithUserProvidedCopyConstructorySo03Has{{cdeF0V_ACtACF|efgH0V_ADtADF}}" -// ITANIUM_X64-SAME: (%TSo30HasUserProvidedCopyConstructorV* {{.*}}[[ARG0:%.*]], %TSo30HasUserProvidedCopyConstructorV* {{.*}}[[ARG1:%.*]], %TSo30HasUserProvidedCopyConstructorV* {{.*}}[[ARG2:%.*]]) -// ITANIUM_X64: [[ARG0_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG0]] to %struct.HasUserProvidedCopyConstructor* -// ITANIUM_X64: [[ARG2_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG2]] to %struct.HasUserProvidedCopyConstructor* -// ITANIUM_X64: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(%struct.HasUserProvidedCopyConstructor* [[ARG0_AS_STRUCT]], %struct.HasUserProvidedCopyConstructor* [[ARG2_AS_STRUCT]]) -// ITANIUM_X64: [[ARG1_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG1]] to %struct.HasUserProvidedCopyConstructor* -// ITANIUM_X64: [[ARG2_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG2]] to %struct.HasUserProvidedCopyConstructor* -// ITANIUM_X64: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(%struct.HasUserProvidedCopyConstructor* [[ARG1_AS_STRUCT]], %struct.HasUserProvidedCopyConstructor* [[ARG2_AS_STRUCT]]) +// ITANIUM_X64-SAME: (ptr {{.*}}[[ARG0:%.*]], ptr {{.*}}[[ARG1:%.*]], ptr {{.*}}[[ARG2:%.*]]) +// ITANIUM_X64: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(ptr [[ARG0]], ptr [[ARG2]]) +// ITANIUM_X64: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(ptr [[ARG1]], ptr [[ARG2]]) // ITANIUM_X64: ret void public func copyWithUserProvidedCopyConstructor(_ x: HasUserProvidedCopyConstructor) diff --git a/test/Interop/Cxx/class/constructors-copy-irgen-windows.swift b/test/Interop/Cxx/class/constructors-copy-irgen-windows.swift index 20ba2dde667f7..910f7dec9e946 100644 --- a/test/Interop/Cxx/class/constructors-copy-irgen-windows.swift +++ b/test/Interop/Cxx/class/constructors-copy-irgen-windows.swift @@ -1,7 +1,6 @@ // Target-specific tests for C++ copy constructor code generation. -// 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 -// 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 +// 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 // REQUIRES: OS=windows-msvc // REQUIRES: CPU=x86_64 @@ -10,13 +9,9 @@ import Constructors import TypeClassification // MICROSOFT_X64-LABEL: define dllexport swiftcc void @"$s7MySwift35copyWithUserProvidedCopyConstructorySo03Has{{efgH0V_ADtADF|cdeF0V_ACtACF}}" -// MICROSOFT_X64-SAME: (%TSo30HasUserProvidedCopyConstructorV* {{.*}}[[ARG0:%.*]], %TSo30HasUserProvidedCopyConstructorV* {{.*}}[[ARG1:%.*]], %TSo30HasUserProvidedCopyConstructorV* {{.*}}[[ARG2:%.*]]) -// MICROSOFT_X64: [[ARG0_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG0]] to %struct.HasUserProvidedCopyConstructor* -// MICROSOFT_X64: [[ARG2_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG2]] to %struct.HasUserProvidedCopyConstructor* -// MICROSOFT_X64: call %struct.HasUserProvidedCopyConstructor* @"??0HasUserProvidedCopyConstructor@@QEAA@AEBU0@@Z"(%struct.HasUserProvidedCopyConstructor* [[ARG0_AS_STRUCT]], %struct.HasUserProvidedCopyConstructor* [[ARG2_AS_STRUCT]]) -// MICROSOFT_X64: [[ARG1_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG1]] to %struct.HasUserProvidedCopyConstructor* -// MICROSOFT_X64: [[ARG2_AS_STRUCT:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG2]] to %struct.HasUserProvidedCopyConstructor* -// MICROSOFT_X64: call %struct.HasUserProvidedCopyConstructor* @"??0HasUserProvidedCopyConstructor@@QEAA@AEBU0@@Z"(%struct.HasUserProvidedCopyConstructor* [[ARG1_AS_STRUCT]], %struct.HasUserProvidedCopyConstructor* [[ARG2_AS_STRUCT]]) +// MICROSOFT_X64-SAME: (ptr {{.*}}[[ARG0:%.*]], ptr {{.*}}[[ARG1:%.*]], ptr {{.*}}[[ARG2:%.*]]) +// MICROSOFT_X64: call ptr @"??0HasUserProvidedCopyConstructor@@QEAA@AEBU0@@Z"(ptr [[ARG0]], ptr [[ARG2]]) +// MICROSOFT_X64: call ptr @"??0HasUserProvidedCopyConstructor@@QEAA@AEBU0@@Z"(ptr [[ARG1]], ptr [[ARG2]]) // MICROSOFT_X64: ret void public func copyWithUserProvidedCopyConstructor(_ x: HasUserProvidedCopyConstructor) diff --git a/test/Interop/Cxx/class/constructors-irgen-macosx.swift b/test/Interop/Cxx/class/constructors-irgen-macosx.swift index c475d20f5d817..380cf583b2803 100644 --- a/test/Interop/Cxx/class/constructors-irgen-macosx.swift +++ b/test/Interop/Cxx/class/constructors-irgen-macosx.swift @@ -1,7 +1,6 @@ // Target-specific tests for C++ constructor call code generation. -// RUN: %swift %use_no_opaque_pointers -module-name MySwift -target x86_64-apple-macosx10.9 -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info -Xcc -fignore-exceptions | %FileCheck %s -check-prefix=ITANIUM_X64 -// RUN: %swift -module-name MySwift -target x86_64-apple-macosx10.9 -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info -Xcc -fignore-exceptions +// RUN: %swift -module-name MySwift -target x86_64-apple-macosx10.9 -dump-clang-diagnostics -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -parse-stdlib -parse-as-library -disable-legacy-type-info -Xcc -fignore-exceptions | %FileCheck %s -check-prefix=ITANIUM_X64 // REQUIRES: OS=macosx // REQUIRES: CPU=x86_64 @@ -10,16 +9,16 @@ import Constructors import TypeClassification public func createHasVirtualBase() -> HasVirtualBase { - // ITANIUM_X64: define swiftcc void @"$s7MySwift20createHasVirtualBaseSo0deF0VyF"(%TSo14HasVirtualBaseV* noalias nocapture sret({{.*}}) %0) + // ITANIUM_X64: define swiftcc void @"$s7MySwift20createHasVirtualBaseSo0deF0VyF"(ptr noalias nocapture sret({{.*}}) %0) // ITANIUM_X64-NOT: define - // ITANIUM_X64: call void @_ZN14HasVirtualBaseC1E7ArgType(%struct.HasVirtualBase* %{{[0-9]+}}, i32 %{{[0-9]+}}) + // ITANIUM_X64: call void @_ZN14HasVirtualBaseC1E7ArgType(ptr %{{[0-9]+}}, i32 %{{[0-9]+}}) return HasVirtualBase(ArgType()) } public func createImplicitDefaultConstructor() -> ImplicitDefaultConstructor { // ITANIUM_X64: define swiftcc i32 @"$s7MySwift32createImplicitDefaultConstructorSo0deF0VyF"() // ITANIUM_X64-NOT: define - // ITANIUM_X64: call void @_ZN26ImplicitDefaultConstructorC1Ev(%struct.ImplicitDefaultConstructor* %{{[0-9]+}}) + // ITANIUM_X64: call void @_ZN26ImplicitDefaultConstructorC1Ev(ptr %{{[0-9]+}}) return ImplicitDefaultConstructor() } @@ -28,11 +27,8 @@ public func createStructWithSubobjectCopyConstructorAndValue() { // ITANIUM_X64: [[MEMBER:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV // ITANIUM_X64: [[OBJ:%.*]] = alloca %TSo42StructWithSubobjectCopyConstructorAndValueV // ITANIUM_X64: [[TMP:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV - // ITANIUM_X64: [[MEMBER_AS_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue* - // ITANIUM_X64: void @_ZN33StructWithCopyConstructorAndValueC1Ev(%struct.StructWithCopyConstructorAndValue* [[MEMBER_AS_STRUCT]]) - // ITANIUM_X64: [[TMP_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[TMP]] to %struct.StructWithCopyConstructorAndValue* - // ITANIUM_X64: [[MEMBER_AS_STRUCT_2:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue* - // ITANIUM_X64: call void @_ZN33StructWithCopyConstructorAndValueC1ERKS_(%struct.StructWithCopyConstructorAndValue* [[TMP_STRUCT]], %struct.StructWithCopyConstructorAndValue* [[MEMBER_AS_STRUCT_2]]) + // ITANIUM_X64: void @_ZN33StructWithCopyConstructorAndValueC1Ev(ptr [[MEMBER]]) + // ITANIUM_X64: call void @_ZN33StructWithCopyConstructorAndValueC1ERKS_(ptr [[TMP]], ptr [[MEMBER]]) // ITANIUM_X64: ret void let member = StructWithCopyConstructorAndValue() let obj = StructWithSubobjectCopyConstructorAndValue(member: member) @@ -41,11 +37,10 @@ public func createStructWithSubobjectCopyConstructorAndValue() { public func createTemplatedConstructor() { // ITANIUM_X64-LABEL: define swiftcc void @"$s7MySwift26createTemplatedConstructoryyF"() // ITANIUM_X64: [[OBJ:%.*]] = alloca %TSo20TemplatedConstructorV - // ITANIUM_X64: [[IVAL:%.*]] = load i32, i32* - // ITANIUM_X64: [[OBJ_AS_STRUCT:%.*]] = bitcast %TSo20TemplatedConstructorV* [[OBJ]] to %struct.TemplatedConstructor* - // ITANIUM_X64: call void @_ZN20TemplatedConstructorC1I7ArgTypeEET_(%struct.TemplatedConstructor* [[OBJ_AS_STRUCT]], i32 [[IVAL]]) + // ITANIUM_X64: [[IVAL:%.*]] = load i32, ptr + // ITANIUM_X64: call void @_ZN20TemplatedConstructorC1I7ArgTypeEET_(ptr [[OBJ]], i32 [[IVAL]]) // ITANIUM_X64: ret void - // ITANIUM_X64-LABEL: define {{.*}}void @_ZN20TemplatedConstructorC1I7ArgTypeEET_(%struct.TemplatedConstructor* {{.*}}, i32 {{.*}}) + // ITANIUM_X64-LABEL: define {{.*}}void @_ZN20TemplatedConstructorC1I7ArgTypeEET_(ptr {{.*}}, i32 {{.*}}) let templated = TemplatedConstructor(ArgType()) } diff --git a/test/Interop/Cxx/class/constructors-irgen-windows.swift b/test/Interop/Cxx/class/constructors-irgen-windows.swift index d2987eaf975c8..2b988b37c881f 100644 --- a/test/Interop/Cxx/class/constructors-irgen-windows.swift +++ b/test/Interop/Cxx/class/constructors-irgen-windows.swift @@ -1,7 +1,6 @@ // Target-specific tests for C++ constructor call code generation. -// 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 -// 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 +// 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 // REQUIRES: OS=windows-msvc // REQUIRES: CPU=x86_64 @@ -10,10 +9,10 @@ import Constructors import TypeClassification public func createHasVirtualBase() -> HasVirtualBase { - // MICROSOFT_X64: define dllexport swiftcc void @"$s7MySwift20createHasVirtualBaseSo0{{bcD0VyF|deF0VyF}}"(%TSo14HasVirtualBaseV* noalias nocapture sret({{.*}}) %0) + // MICROSOFT_X64: define dllexport swiftcc void @"$s7MySwift20createHasVirtualBaseSo0{{bcD0VyF|deF0VyF}}"(ptr noalias nocapture sret({{.*}}) %0) // MICROSOFT_X64-NOT: define // Note `this` return type and implicit "most derived" argument. - // MICROSOFT_X64: call %struct.HasVirtualBase* @"??0HasVirtualBase@@QEAA@UArgType@@@Z"(%struct.HasVirtualBase* %{{[0-9]+}}, i32 %{{[0-9]+}}, i32 1) + // MICROSOFT_X64: call ptr @"??0HasVirtualBase@@QEAA@UArgType@@@Z"(ptr %{{[0-9]+}}, i32 %{{[0-9]+}}, i32 1) return HasVirtualBase(ArgType()) } @@ -21,7 +20,7 @@ public func createImplicitDefaultConstructor() -> ImplicitDefaultConstructor { // MICROSOFT_X64: define dllexport swiftcc i32 @"$s7MySwift32createImplicitDefaultConstructorSo0{{bcD0VyF|deF0VyF}}"() // MICROSOFT_X64-NOT: define // Note `this` return type but no implicit "most derived" argument. - // MICROSOFT_X64: call %struct.ImplicitDefaultConstructor* @"??0ImplicitDefaultConstructor@@QEAA@XZ"(%struct.ImplicitDefaultConstructor* %{{[0-9]+}}) + // MICROSOFT_X64: call ptr @"??0ImplicitDefaultConstructor@@QEAA@XZ"(ptr %{{[0-9]+}}) return ImplicitDefaultConstructor() } @@ -30,11 +29,8 @@ public func createStructWithSubobjectCopyConstructorAndValue() { // MICROSOFT_X64: [[MEMBER:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV // MICROSOFT_X64: [[OBJ:%.*]] = alloca %TSo42StructWithSubobjectCopyConstructorAndValueV // MICROSOFT_X64: [[TMP:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV - // MICROSOFT_X64: [[MEMBER_AS_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue* - // MICROSOFT_X64: call %struct.StructWithCopyConstructorAndValue* @"??0StructWithCopyConstructorAndValue@@QEAA@XZ"(%struct.StructWithCopyConstructorAndValue* [[MEMBER_AS_STRUCT]]) - // MICROSOFT_X64: [[TMP_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[TMP]] to %struct.StructWithCopyConstructorAndValue* - // MICROSOFT_X64: [[MEMBER_AS_STRUCT_2:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue* - // MICROSOFT_X64: call %struct.StructWithCopyConstructorAndValue* @"??0StructWithCopyConstructorAndValue@@QEAA@AEBU0@@Z"(%struct.StructWithCopyConstructorAndValue* [[TMP_STRUCT]], %struct.StructWithCopyConstructorAndValue* [[MEMBER_AS_STRUCT_2]]) + // MICROSOFT_X64: call ptr @"??0StructWithCopyConstructorAndValue@@QEAA@XZ"(ptr [[MEMBER]]) + // MICROSOFT_X64: call ptr @"??0StructWithCopyConstructorAndValue@@QEAA@AEBU0@@Z"(ptr [[TMP]], ptr [[MEMBER]]) // MICROSOFT_X64: ret void let member = StructWithCopyConstructorAndValue() let obj = StructWithSubobjectCopyConstructorAndValue(member: member) @@ -43,11 +39,10 @@ public func createStructWithSubobjectCopyConstructorAndValue() { public func createTemplatedConstructor() { // MICROSOFT_X64-LABEL: define dllexport swiftcc void @"$s7MySwift26createTemplatedConstructoryyF"() // MICROSOFT_X64: [[OBJ:%.*]] = alloca %TSo20TemplatedConstructorV - // MICROSOFT_X64: [[IVAL:%.*]] = load i32, i32* - // MICROSOFT_X64: [[OBJ_AS_STRUCT:%.*]] = bitcast %TSo20TemplatedConstructorV* [[OBJ]] to %struct.TemplatedConstructor* - // MICROSOFT_X64: call %struct.TemplatedConstructor* @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(%struct.TemplatedConstructor* [[OBJ_AS_STRUCT]], i32 [[IVAL]]) + // MICROSOFT_X64: [[IVAL:%.*]] = load i32, ptr + // MICROSOFT_X64: call ptr @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(ptr [[OBJ]], i32 [[IVAL]]) // MICROSOFT_X64: ret void - // MICROSOFT_X64-LABEL: define {{.*}}%struct.TemplatedConstructor* @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(%struct.TemplatedConstructor* {{.*}}, i32 {{.*}}) + // MICROSOFT_X64-LABEL: define {{.*}}ptr @"??$?0UArgType@@@TemplatedConstructor@@QEAA@UArgType@@@Z"(ptr {{.*}}, i32 {{.*}}) let templated = TemplatedConstructor(ArgType()) } diff --git a/test/Interop/Cxx/class/constructors-objc-irgen.swift b/test/Interop/Cxx/class/constructors-objc-irgen.swift index 2f1f01aee8d79..21d1bf509a791 100644 --- a/test/Interop/Cxx/class/constructors-objc-irgen.swift +++ b/test/Interop/Cxx/class/constructors-objc-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -Xcc -fignore-exceptions +// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -Xcc -fignore-exceptions | %FileCheck %s // REQUIRES: CPU=x86_64 // REQUIRES: objc_interop @@ -10,8 +9,7 @@ public func createConstructorWithNSArrayParam() -> ConstructorWithNSArrayParam { // CHECK: define swiftcc void @"$s4main33createConstructorWithNSArrayParamSo0cdeF0VyF"() // CHECK-NOT: define // CHECK: [[VAR:%[0-9]+]] = alloca %TSo27ConstructorWithNSArrayParamV, align 1 - // CHECK: %{{[0-9]+}} = call swiftcc %TSo7NSArrayC* @"$sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF"(%swift.bridge* %{{[0-9]+}}, %swift.type* getelementptr inbounds (%swift.full_existential_type, %swift.full_existential_type* @"$sypN", i32 0, i32 1)) - // CHECK: [[CAST_VAR:%[0-9]+]] = bitcast %TSo27ConstructorWithNSArrayParamV* [[VAR]] to %struct.ConstructorWithNSArrayParam* - // CHECK: call void @_ZN27ConstructorWithNSArrayParamC1EP7NSArray(%struct.ConstructorWithNSArrayParam* [[CAST_VAR]], [[VAR]]* %{{[0-9]+}}) + // CHECK: %{{[0-9]+}} = call swiftcc ptr @"$sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF"(ptr %{{[0-9]+}}, ptr getelementptr inbounds (%swift.full_existential_type, ptr @"$sypN", i32 0, i32 1)) + // CHECK: call void @_ZN27ConstructorWithNSArrayParamC1EP7NSArray(ptr [[VAR]], ptr %{{[0-9]+}}) return ConstructorWithNSArrayParam([]) } diff --git a/test/Interop/Cxx/class/copy-move-assignment-irgen.swift b/test/Interop/Cxx/class/copy-move-assignment-irgen.swift index 5e9ab96953d79..aaa33f148a7d5 100644 --- a/test/Interop/Cxx/class/copy-move-assignment-irgen.swift +++ b/test/Interop/Cxx/class/copy-move-assignment-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -Xcc -fignore-exceptions -O | %FileCheck %s -// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -Xcc -fignore-exceptions -O +// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s -Xcc -fignore-exceptions -O | %FileCheck %s import CopyMoveAssignment @@ -18,20 +17,20 @@ public func copyAssign() { } // CHECK-LABEL: define {{.*}}copyAssign -// CHECK: call {{void|\%struct.NonTrivialCopyAndCopyMoveAssign\*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[COPY_INSTANCE:.*]]) -// CHECK: call {{void|\%struct.NonTrivialCopyAndCopyMoveAssign\*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[COPY_INSTANCE2:.*]]) -// CHECK: call {{void|\%struct.NonTrivialCopyAndCopyMoveAssign\*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[COPY_INSTANCE]]) -// CHECK: call {{void|\%struct.NonTrivialCopyAndCopyMoveAssign\*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1EOS_|_ZN31NonTrivialCopyAndCopyMoveAssignC2EOS_|_ZN31NonTrivialCopyAndCopyMoveAssignC1ERKS_Tm|_ZN31NonTrivialCopyAndCopyMoveAssignC2ERKS_Tm|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@AEBU0@@Z"}}( +// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[COPY_INSTANCE:.*]]) +// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[COPY_INSTANCE2:.*]]) +// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[COPY_INSTANCE]]) +// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1EOS_|_ZN31NonTrivialCopyAndCopyMoveAssignC2EOS_|_ZN31NonTrivialCopyAndCopyMoveAssignC1ERKS_Tm|_ZN31NonTrivialCopyAndCopyMoveAssignC2ERKS_Tm|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@AEBU0@@Z"}}( // CHECK-SAME: %[[COPY_INSTANCE]], -// CHECK-SAME: %struct.NonTrivialCopyAndCopyMoveAssign* +// CHECK-SAME: ptr // CHECK-SAME: %[[COPY_INSTANCE2]]) -// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[COPY_INSTANCE2]]) -// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[COPY_INSTANCE]]) +// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[COPY_INSTANCE2]]) +// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[COPY_INSTANCE]]) // CHECK-LABEL: define {{.*}}takeAssign -// CHECK: call {{void|\%struct.NonTrivialCopyAndCopyMoveAssign\*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[MOVE_INSTANCE:.*]]) -// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[MOVE_INSTANCE]]) -// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(%struct.NonTrivialCopyAndCopyMoveAssign* %[[MOVE_INSTANCE]]) +// CHECK: call {{void|ptr}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignC1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignC2Ev|"\?\?0NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[MOVE_INSTANCE:.*]]) +// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[MOVE_INSTANCE]]) +// CHECK: call {{.*}} @{{_ZN31NonTrivialCopyAndCopyMoveAssignD1Ev|_ZN31NonTrivialCopyAndCopyMoveAssignD2Ev|"\?\?1NonTrivialCopyAndCopyMoveAssign@@QEAA@XZ"}}(ptr %[[MOVE_INSTANCE]]) // CHECK-LABEL: } diff --git a/test/Interop/Cxx/class/destructors-correct-abi-irgen.swift b/test/Interop/Cxx/class/destructors-correct-abi-irgen.swift index 4f26ba68d35be..0eab96ef4ce60 100644 --- a/test/Interop/Cxx/class/destructors-correct-abi-irgen.swift +++ b/test/Interop/Cxx/class/destructors-correct-abi-irgen.swift @@ -1,12 +1,10 @@ -// RUN: %swift %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s | %FileCheck %s -// RUN: %swift -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s +// RUN: %swift -I %S/Inputs -enable-experimental-cxx-interop -emit-ir %s | %FileCheck %s import Destructors // CHECK-LABEL: define {{.*}}void @"$s4main4testyyF" // CHECK: [[H:%.*]] = alloca %TSo33HasUserProvidedDestructorAndDummyV -// CHECK: [[CXX_THIS:%.*]] = bitcast %TSo33HasUserProvidedDestructorAndDummyV* [[H]] to %struct.HasUserProvidedDestructorAndDummy* -// CHECK: call {{.*}}@{{_ZN33HasUserProvidedDestructorAndDummyD(1|2)Ev|"\?\?1HasUserProvidedDestructorAndDummy@@QEAA@XZ"}}(%struct.HasUserProvidedDestructorAndDummy* [[CXX_THIS]]) +// CHECK: call {{.*}}@{{_ZN33HasUserProvidedDestructorAndDummyD(1|2)Ev|"\?\?1HasUserProvidedDestructorAndDummy@@QEAA@XZ"}}(ptr [[H]]) // CHECK: ret void public func test() { let d = DummyStruct() diff --git a/test/Interop/Cxx/class/destructors-non-trivial-implicit-irgen.swift b/test/Interop/Cxx/class/destructors-non-trivial-implicit-irgen.swift index 0209815488b9e..7f5ce77a94010 100644 --- a/test/Interop/Cxx/class/destructors-non-trivial-implicit-irgen.swift +++ b/test/Interop/Cxx/class/destructors-non-trivial-implicit-irgen.swift @@ -1,10 +1,9 @@ -// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir | %FileCheck %s -// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir +// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir | %FileCheck %s import Destructors // CHECK-LABEL: define {{.*}}void @"$s4main35testHasNonTrivialImplicitDestructoryyF" -// CHECK: call {{.*}}@{{_ZN31HasNonTrivialImplicitDestructorD(1|2)Ev|"\?\?1HasNonTrivialImplicitDestructor@@QEAA@XZ"}}(%struct.HasNonTrivialImplicitDestructor* +// CHECK: call {{.*}}@{{_ZN31HasNonTrivialImplicitDestructorD(1|2)Ev|"\?\?1HasNonTrivialImplicitDestructor@@QEAA@XZ"}}(ptr // CHECK: ret void // TODO: Somehow check that _ZN31HasNonTrivialImplicitDestructorD1Ev (if present) calls _ZN25HasUserProvidedDestructorD2Ev. @@ -14,6 +13,6 @@ public func testHasNonTrivialImplicitDestructor() { } // Check that we call the base destructor. -// CHECK-LABEL: define {{.*}}@{{_ZN31HasNonTrivialImplicitDestructorD2Ev|"\?\?1HasNonTrivialImplicitDestructor@@QEAA@XZ"}}(%struct.HasNonTrivialImplicitDestructor* +// CHECK-LABEL: define {{.*}}@{{_ZN31HasNonTrivialImplicitDestructorD2Ev|"\?\?1HasNonTrivialImplicitDestructor@@QEAA@XZ"}}(ptr // CHECK: call {{.*}}@{{_ZN25HasUserProvidedDestructorD(1|2)Ev|"\?\?1HasUserProvidedDestructor@@QEAA@XZ"}} // CHECK: ret diff --git a/test/Interop/Cxx/class/inline-function-codegen/constructor-calls-method-irgen.swift b/test/Interop/Cxx/class/inline-function-codegen/constructor-calls-method-irgen.swift index 9273ddb0a048b..c10d938040166 100644 --- a/test/Interop/Cxx/class/inline-function-codegen/constructor-calls-method-irgen.swift +++ b/test/Interop/Cxx/class/inline-function-codegen/constructor-calls-method-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s import ConstructorCallsMethod @@ -7,4 +6,4 @@ public func getIncrementorValue() -> CInt { return callConstructor(41) } -// CHECK: define {{.*}}i32 @{{_ZN11Incrementor9incrementEi|"\?increment@Incrementor@@QEAAHH@Z"}}(%struct.Incrementor* {{.*}}, i32 {{.*}}) +// CHECK: define {{.*}}i32 @{{_ZN11Incrementor9incrementEi|"\?increment@Incrementor@@QEAAHH@Z"}}(ptr {{.*}}, i32 {{.*}}) diff --git a/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-from-nested-struct-irgen.swift b/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-from-nested-struct-irgen.swift index 81c0d5209befe..d3b6263d2b6c2 100644 --- a/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-from-nested-struct-irgen.swift +++ b/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-from-nested-struct-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s import MethodCallsMethodFromNestedStruct @@ -7,4 +6,4 @@ public func getValueFromMethod() -> CInt { return callMethod(41) } -// CHECK: define {{.*}}i32 @{{_ZN13IncrementUser11Incrementor9incrementEi|"\?increment@Incrementor@IncrementUser@@QEAAHH@Z"}}(%"struct.IncrementUser::Incrementor"* {{.*}}, i32 {{.*}}) +// CHECK: define {{.*}}i32 @{{_ZN13IncrementUser11Incrementor9incrementEi|"\?increment@Incrementor@IncrementUser@@QEAAHH@Z"}}(ptr {{.*}}, i32 {{.*}}) diff --git a/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-irgen.swift b/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-irgen.swift index 03effea05b6a0..ea2614c91412d 100644 --- a/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-irgen.swift +++ b/test/Interop/Cxx/class/inline-function-codegen/method-calls-method-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s import MethodCallsMethod @@ -7,4 +6,4 @@ public func getValueFromMethod() -> CInt { return callMethod(41) } -// CHECK: define {{.*}}i32 @{{_ZN11Incrementor9incrementEi|"\?increment@Incrementor@@QEAAHH@Z"}}(%struct.Incrementor*{{.*}}, i32{{.*}}) +// CHECK: define {{.*}}i32 @{{_ZN11Incrementor9incrementEi|"\?increment@Incrementor@@QEAAHH@Z"}}(ptr{{.*}}, i32{{.*}}) diff --git a/test/Interop/Cxx/class/memory-layout-silgen.swift b/test/Interop/Cxx/class/memory-layout-silgen.swift index b97b9a09f92f2..ee2861142a58a 100644 --- a/test/Interop/Cxx/class/memory-layout-silgen.swift +++ b/test/Interop/Cxx/class/memory-layout-silgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swiftxx-frontend %use_no_opaque_pointers -I %S/Inputs -emit-ir -o - %s | %FileCheck %s -// RUN: %target-swiftxx-frontend -I %S/Inputs -emit-ir -o - %s +// RUN: %target-swiftxx-frontend -I %S/Inputs -emit-ir -o - %s | %FileCheck %s // XFAIL: OS=linux-android // XFAIL: OS=linux-androideabi @@ -12,5 +11,5 @@ var v = PrivateMemberLayout() // words, we use Clang's, not Swift's view of the class to compute the memory // layout. // The important point here is that the second index is 1, not 0. -// CHECK: store i32 42, i32* getelementptr inbounds (%TSo19PrivateMemberLayoutV, %TSo19PrivateMemberLayoutV* @"$s4main1vSo19PrivateMemberLayoutVvp", i32 0, i32 1, i32 0), align 4 +// CHECK: store i32 42, ptr getelementptr inbounds (%TSo19PrivateMemberLayoutV, ptr @"$s4main1vSo19PrivateMemberLayoutVvp", i32 0, i32 1), align 4 v.b = 42 diff --git a/test/Interop/Cxx/class/protocol-conformance-irgen.swift b/test/Interop/Cxx/class/protocol-conformance-irgen.swift index 80dc1df00a5e7..ca73212d40cda 100644 --- a/test/Interop/Cxx/class/protocol-conformance-irgen.swift +++ b/test/Interop/Cxx/class/protocol-conformance-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s import ProtocolConformance @@ -8,12 +7,12 @@ protocol HasReturn42 { } -// CHECK: define {{.*}}i32 @"$sSo18ConformsToProtocolV4main11HasReturn42A2cDP8return42s5Int32VyFTW"(%TSo18ConformsToProtocolV* nocapture swiftself dereferenceable(1) %{{.*}}, %swift.type* %{{.*}}, i8** %{{.*}}) -// CHECK: [[OUT:%.*]] = call i32 @{{_ZN18ConformsToProtocol8return42Ev|"\?return42@ConformsToProtocol@@QEAAHXZ"}}(%struct.ConformsToProtocol* +// CHECK: define {{.*}}i32 @"$sSo18ConformsToProtocolV4main11HasReturn42A2cDP8return42s5Int32VyFTW"(ptr nocapture swiftself dereferenceable(1) %{{.*}}, ptr %{{.*}}, ptr %{{.*}}) +// CHECK: [[OUT:%.*]] = call i32 @{{_ZN18ConformsToProtocol8return42Ev|"\?return42@ConformsToProtocol@@QEAAHXZ"}}(ptr // CHECK: ret i32 [[OUT]] // CHECK: define {{.*}}%swift.metadata_response @"$sSo18ConformsToProtocolVMa"({{i64|i32}} [[ARG:%.*]]) -// CHECK: load %swift.type*, %swift.type** @"$sSo18ConformsToProtocolVML" +// CHECK: load ptr, ptr @"$sSo18ConformsToProtocolVML" // CHECK: call swiftcc %swift.metadata_response @swift_getForeignTypeMetadata({{i64|i32}} [[ARG]] // CHECK: ret %swift.metadata_response diff --git a/test/Interop/Cxx/class/returns-large-class-irgen.swift b/test/Interop/Cxx/class/returns-large-class-irgen.swift index 50b9336a7a693..19b5645691deb 100644 --- a/test/Interop/Cxx/class/returns-large-class-irgen.swift +++ b/test/Interop/Cxx/class/returns-large-class-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s -validate-tbd-against-ir=none | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -validate-tbd-against-ir=none +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -validate-tbd-against-ir=none | %FileCheck %s // This test verifies that Swift correctly emits IR calls to C++ functions that // had Named Return Value Optimization applied to them. The first argument of @@ -15,7 +14,7 @@ func foo() -> LargeClass { foo() -// CHECK: call swiftcc void @"$s4main3fooSo10LargeClassVyF"(%TSo10LargeClassV* noalias nocapture sret(%TSo10LargeClassV) %{{.*}}) +// CHECK: call swiftcc void @"$s4main3fooSo10LargeClassVyF"(ptr noalias nocapture sret(%TSo10LargeClassV) %{{.*}}) // The C++ function: // CHECK: define{{( dso_local)?}} void @{{_Z21funcReturnsLargeClassv|"\?funcReturnsLargeClass@@YA\?AULargeClass@@XZ"}}({{%struct.LargeClass\*|ptr}} noalias sret(%struct.LargeClass){{( align .*)?}} %{{.*}}) diff --git a/test/Interop/Cxx/class/type-classification-non-trivial-irgen.swift b/test/Interop/Cxx/class/type-classification-non-trivial-irgen.swift index 6af57349c5c1a..1e6ba121304d0 100644 --- a/test/Interop/Cxx/class/type-classification-non-trivial-irgen.swift +++ b/test/Interop/Cxx/class/type-classification-non-trivial-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swiftxx-frontend %use_no_opaque_pointers -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swiftxx-frontend -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions +// RUN: %target-swiftxx-frontend -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions | %FileCheck %s // Verify that non-trivial/address-only C++ classes are constructed and accessed // correctly. Make sure that we correctly IRGen functions that construct @@ -13,11 +12,10 @@ import TypeClassification // CHECK-LABEL: define {{.*}}i1 @"$s4main37testStructWithCopyConstructorAndValueSbyF" // CHECK: [[OBJ:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV -// CHECK: [[STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[OBJ]] to %struct.StructWithCopyConstructorAndValue* -// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)Ei|"\?\?0StructWithCopyConstructorAndValue@@QEAA@H@Z"}}(%struct.StructWithCopyConstructorAndValue* {{(noalias )?}}[[STRUCT]], i32 42) -// CHECK: [[OBJ_VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, %TSo33StructWithCopyConstructorAndValueV* [[OBJ]], i32 0, i32 0 -// CHECK: [[I_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[OBJ_VAL]], i32 0, i32 0 -// CHECK: [[I_VAL_VAL:%.*]] = load i32, i32* [[OBJ_VAL]] +// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)Ei|"\?\?0StructWithCopyConstructorAndValue@@QEAA@H@Z"}}(ptr {{(noalias )?}}[[OBJ]], i32 42) +// CHECK: [[OBJ_VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, ptr [[OBJ]], i32 0, i32 0 +// CHECK: [[I_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[OBJ_VAL]], i32 0, i32 0 +// CHECK: [[I_VAL_VAL:%.*]] = load i32, ptr [[OBJ_VAL]] // CHECK: [[OUT:%.*]] = icmp eq i32 [[I_VAL_VAL]], 42 // CHECK: ret i1 [[OUT]] public func testStructWithCopyConstructorAndValue() -> Bool { @@ -30,11 +28,10 @@ public func testStructWithCopyConstructorAndValue() -> Bool { // CHECK: [[OBJ:%.*]] = alloca %TSo42StructWithSubobjectCopyConstructorAndValueV // CHECK: alloca %TSo33StructWithCopyConstructorAndValueV // CHECK: [[TMP:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV -// CHECK: [[MEMBER_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue* -// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)Ei|"\?\?0StructWithCopyConstructorAndValue@@QEAA@H@Z"}}(%struct.StructWithCopyConstructorAndValue* {{(noalias )?}}[[MEMBER_STRUCT]], i32 42) -// CHECK: [[TEMP_MEMBER:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, %TSo33StructWithCopyConstructorAndValueV* [[TMP]], i32 0, i32 0 -// CHECK: [[TEMP_MEMBER_VALUE:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[TEMP_MEMBER]], i32 0, i32 0 -// CHECK: [[LHS:%.*]] = load i32, i32* [[TEMP_MEMBER_VALUE]] +// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)Ei|"\?\?0StructWithCopyConstructorAndValue@@QEAA@H@Z"}}(ptr {{(noalias )?}}[[MEMBER]], i32 42) +// CHECK: [[TEMP_MEMBER:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, ptr [[TMP]], i32 0, i32 0 +// CHECK: [[TEMP_MEMBER_VALUE:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[TEMP_MEMBER]], i32 0, i32 0 +// CHECK: [[LHS:%.*]] = load i32, ptr [[TEMP_MEMBER_VALUE]] // CHECK: [[OUT:%.*]] = icmp eq i32 [[LHS]], 42 // CHECK: ret i1 [[OUT]] public func testStructWithSubobjectCopyConstructorAndValue() -> Bool { @@ -48,17 +45,12 @@ public func testStructWithSubobjectCopyConstructorAndValue() -> Bool { // CHECK: [[OBJ:%.*]] = alloca %TSo037StructWithCopyConstructorAndSubobjectcdE5ValueV // CHECK: [[TEMP:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV // CHECK: [[TEMP2:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV -// CHECK: [[MEMBER_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue* -// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)Ei|"\?\?0StructWithCopyConstructorAndValue@@QEAA@H@Z"}}(%struct.StructWithCopyConstructorAndValue* {{(noalias )?}}[[MEMBER_STRUCT]], i32 42) -// CHECK: [[TEMP_AS_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[TEMP]] to %struct.StructWithCopyConstructorAndValue* -// CHECK: [[MEMBER_AS_STRUCT:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[MEMBER]] to %struct.StructWithCopyConstructorAndValue* -// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)ERKS_|"\?\?0StructWithCopyConstructorAndValue@@QEAA@AEBU0@@Z"}}(%struct.StructWithCopyConstructorAndValue* [[TEMP_AS_STRUCT]], %struct.StructWithCopyConstructorAndValue* [[MEMBER_AS_STRUCT]]) -// CHECK: [[TEMP_AS_STRUCT_2:%.*]] = bitcast %TSo33StructWithCopyConstructorAndValueV* [[TEMP]] to %struct.StructWithCopyConstructorAndValue* -// CHECK: [[OBJ_AS_STRUCT_2:%.*]] = bitcast %TSo037StructWithCopyConstructorAndSubobjectcdE5ValueV* [[OBJ]] to %struct.StructWithCopyConstructorAndSubobjectCopyConstructorAndValue* -// CHECK: call {{.*}}@{{_ZN60StructWithCopyConstructorAndSubobjectCopyConstructorAndValueC(1|2)E33StructWithCopyConstructorAndValue|"\?\?0StructWithCopyConstructorAndSubobjectCopyConstructorAndValue@@QEAA@UStructWithCopyConstructorAndValue@@@Z"}}(%struct.StructWithCopyConstructorAndSubobjectCopyConstructorAndValue* {{(noalias )?}}[[OBJ_AS_STRUCT_2]], %struct.StructWithCopyConstructorAndValue* [[TEMP_AS_STRUCT_2]]) -// CHECK: [[TEMP_MEMBER:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, %TSo33StructWithCopyConstructorAndValueV* [[TEMP2]], i32 0, i32 0 -// CHECK: [[TEMP_MEMBER_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[TEMP_MEMBER]], i32 0, i32 0 -// CHECK: [[LHS:%.*]] = load i32, i32* [[TEMP_MEMBER_VAL]] +// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)Ei|"\?\?0StructWithCopyConstructorAndValue@@QEAA@H@Z"}}(ptr {{(noalias )?}}[[MEMBER]], i32 42) +// CHECK: call {{.*}}@{{_ZN33StructWithCopyConstructorAndValueC(1|2)ERKS_|"\?\?0StructWithCopyConstructorAndValue@@QEAA@AEBU0@@Z"}}(ptr [[TEMP]], ptr [[MEMBER]]) +// CHECK: call {{.*}}@{{_ZN60StructWithCopyConstructorAndSubobjectCopyConstructorAndValueC(1|2)E33StructWithCopyConstructorAndValue|"\?\?0StructWithCopyConstructorAndSubobjectCopyConstructorAndValue@@QEAA@UStructWithCopyConstructorAndValue@@@Z"}}(ptr {{(noalias )?}}[[OBJ]], ptr [[TEMP]]) +// CHECK: [[TEMP_MEMBER:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, ptr [[TEMP2]], i32 0, i32 0 +// CHECK: [[TEMP_MEMBER_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[TEMP_MEMBER]], i32 0, i32 0 +// CHECK: [[LHS:%.*]] = load i32, ptr [[TEMP_MEMBER_VAL]] // CHECK: [[OUT:%.*]] = icmp eq i32 [[LHS]], 42 // CHECK: ret i1 [[OUT]] public func testStructWithCopyConstructorAndSubobjectCopyConstructorAndValue() @@ -70,33 +62,33 @@ public func testStructWithCopyConstructorAndSubobjectCopyConstructorAndValue() return obj.member.value == 42 } -// CHECK-LABEL: define {{.*}}i1 @"$s4main4test3objSbSo33StructWithCopyConstructorAndValueV_tF"(%TSo33StructWithCopyConstructorAndValueV* noalias nocapture dereferenceable(4) %0) -// CHECK: [[VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, %TSo33StructWithCopyConstructorAndValueV* %0, i32 0, i32 0 -// CHECK: [[VAL_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[VAL]], i32 0, i32 0 -// CHECK: [[LHS:%.*]] = load i32, i32* [[VAL_VAL]] +// CHECK-LABEL: define {{.*}}i1 @"$s4main4test3objSbSo33StructWithCopyConstructorAndValueV_tF"(ptr noalias nocapture dereferenceable(4) %0) +// CHECK: [[VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, ptr %0, i32 0, i32 0 +// CHECK: [[VAL_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[VAL]], i32 0, i32 0 +// CHECK: [[LHS:%.*]] = load i32, ptr [[VAL_VAL]] // CHECK: [[OUT:%.*]] = icmp eq i32 [[LHS]], 42 // CHECK: ret i1 [[OUT]] public func test(obj: StructWithCopyConstructorAndValue) -> Bool { return obj.value == 42 } -// CHECK-LABEL: define {{.*}}i1 @"$s4main4test3objSbSo42StructWithSubobjectCopyConstructorAndValueV_tF"(%TSo42StructWithSubobjectCopyConstructorAndValueV* noalias nocapture dereferenceable(4) %0) +// CHECK-LABEL: define {{.*}}i1 @"$s4main4test3objSbSo42StructWithSubobjectCopyConstructorAndValueV_tF"(ptr noalias nocapture dereferenceable(4) %0) // CHECK: [[TMP:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV -// CHECK: [[MEMBER:%.*]] = getelementptr inbounds %TSo42StructWithSubobjectCopyConstructorAndValueV, %TSo42StructWithSubobjectCopyConstructorAndValueV* %0, i32 0, i32 0 -// CHECK: [[VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, %TSo33StructWithCopyConstructorAndValueV* [[TMP]], i32 0, i32 0 -// CHECK: [[VAL_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[VAL]], i32 0, i32 0 -// CHECK: [[LHS:%.*]] = load i32, i32* [[VAL_VAL]] +// CHECK: [[MEMBER:%.*]] = getelementptr inbounds %TSo42StructWithSubobjectCopyConstructorAndValueV, ptr %0, i32 0, i32 0 +// CHECK: [[VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, ptr [[TMP]], i32 0, i32 0 +// CHECK: [[VAL_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[VAL]], i32 0, i32 0 +// CHECK: [[LHS:%.*]] = load i32, ptr [[VAL_VAL]] // CHECK: [[OUT:%.*]] = icmp eq i32 [[LHS]], 42 // CHECK: ret i1 [[OUT]] public func test(obj: StructWithSubobjectCopyConstructorAndValue) -> Bool { return obj.member.value == 42 } -// CHECK-LABEL: define {{.*}}i1 @"$s4main4test3objSbSo037StructWithCopyConstructorAndSubobjectfgH5ValueV_tF"(%TSo037StructWithCopyConstructorAndSubobjectcdE5ValueV* noalias nocapture dereferenceable(4) %0) +// CHECK-LABEL: define {{.*}}i1 @"$s4main4test3objSbSo037StructWithCopyConstructorAndSubobjectfgH5ValueV_tF"(ptr noalias nocapture dereferenceable(4) %0) // CHECK:[[TEMP:%.*]] = alloca %TSo33StructWithCopyConstructorAndValueV -// CHECK:[[VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, %TSo33StructWithCopyConstructorAndValueV* [[TEMP]], i32 0, i32 0 -// CHECK:[[VAL_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[VAL]], i32 0, i32 0 -// CHECK:[[LHS:%.*]] = load i32, i32* [[VAL_VAL]] +// CHECK:[[VAL:%.*]] = getelementptr inbounds %TSo33StructWithCopyConstructorAndValueV, ptr [[TEMP]], i32 0, i32 0 +// CHECK:[[VAL_VAL:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[VAL]], i32 0, i32 0 +// CHECK:[[LHS:%.*]] = load i32, ptr [[VAL_VAL]] // CHECK:[[OUT:%.*]] = icmp eq i32 [[LHS]], 42 // CHECK:ret i1 [[OUT]] public func test( diff --git a/test/Interop/Cxx/exceptions/objc-trap-on-exception-irgen-itanium.swift b/test/Interop/Cxx/exceptions/objc-trap-on-exception-irgen-itanium.swift index 149089cb0bd7a..aeb4021df78ae 100644 --- a/test/Interop/Cxx/exceptions/objc-trap-on-exception-irgen-itanium.swift +++ b/test/Interop/Cxx/exceptions/objc-trap-on-exception-irgen-itanium.swift @@ -1,8 +1,7 @@ // RUN: %empty-directory(%t) // RUN: split-file %s %t -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop +// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s // REQUIRES: objc_interop // UNSUPPORTED: OS=windows-msvc @@ -34,15 +33,15 @@ func testObjCMethodCall() { testObjCMethodCall() // CHECK: define {{.*}} @"$s4test0A14ObjCMethodCallyyF"() #[[#UWATTR:]] personality -// CHECK: invoke void {{.*}} @objc_msgSend +// CHECK: invoke void {{.*}}@objc_msgSend // CHECK-NEXT: to label %[[CONT1:.*]] unwind label %[[UNWIND1:.*]] // CHECK-EMPTY: // CHECK-NEXT: [[CONT1]]: // CHECK: ret // CHECK-EMPTY: // CHECK-NEXT: [[UNWIND1]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK-NEXT: } diff --git a/test/Interop/Cxx/exceptions/trap-on-exception-irgen-itanium.swift b/test/Interop/Cxx/exceptions/trap-on-exception-irgen-itanium.swift index db9fac4e4c56f..c1ad1752bc399 100644 --- a/test/Interop/Cxx/exceptions/trap-on-exception-irgen-itanium.swift +++ b/test/Interop/Cxx/exceptions/trap-on-exception-irgen-itanium.swift @@ -1,10 +1,8 @@ // RUN: %empty-directory(%t) // RUN: split-file %s %t -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop -g | %FileCheck --check-prefix=DEBUG %s -// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop -g +// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s +// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop -g | %FileCheck --check-prefix=DEBUG %s // UNSUPPORTED: OS=windows-msvc @@ -297,7 +295,7 @@ let _ = testStructWithDefaultDestructor() // CHECK-NEXT: ret i32 // CHECK-NEXT: } -// CHECK: define {{.*}} @"$s4test0A17FreeFunctionCallss5Int32VyF"() #[[#SWIFTUWMETA:]] personality i32 (...)* @__gxx_personality_v0 +// CHECK: define {{.*}} @"$s4test0A17FreeFunctionCallss5Int32VyF"() #[[#SWIFTUWMETA:]] personality ptr @__gxx_personality_v0 // CHECK: invoke i32 @_Z18freeFunctionThrowsi(i32 0) // CHECK-NEXT: to label %[[CONT1:.*]] unwind label %[[UNWIND1:.*]] // CHECK-EMPTY: @@ -311,14 +309,14 @@ let _ = testStructWithDefaultDestructor() // CHECK: ret // CHECK-EMPTY: // CHECK-NEXT: [[UNWIND1]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK-EMPTY: // CHECK-NEXT: [[UNWIND2]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK-NEXT: } @@ -335,14 +333,14 @@ let _ = testStructWithDefaultDestructor() // CHECK: ret // CHECK-EMPTY: // CHECK-NEXT: [[UNWIND3]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK-EMPTY: // CHECK-NEXT: [[UNWIND4]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK-NEXT: } @@ -363,14 +361,14 @@ let _ = testStructWithDefaultDestructor() // CHECK: ret // CHECK: define {{.*}} @"$s4test0A11FuncPtrCallyyF"() #[[#SWIFTUWMETA]] personality -// CHECK: call i32 (i32)* @_Z24getFreeFunctionThrowsPtrv() +// CHECK: call ptr @_Z24getFreeFunctionThrowsPtrv() // CHECK: invoke i32 %{{.*}}(i32 2) // CHECK-NEXT: to label %[[CONT20:.*]] unwind label %{{.*}} // CHECK: [[CONT20]]: // CHECK-NEXT: ret void // CHECK: define {{.*}} @"$s4test0A12CFuncPtrCallyyF"() #[[#SWIFTUWMETA]] personality -// CHECK: call void ()* @getCFreeFunctionPointer() +// CHECK: call ptr @getCFreeFunctionPointer() // CHECK: invoke void %{{.*}}() // CHECK-NEXT: to label %[[CONT21:.*]] unwind label %{{.*}} // CHECK: [[CONT21]]: @@ -383,8 +381,8 @@ let _ = testStructWithDefaultDestructor() // CHECK-NEXT: ret i32 // CHECK-EMPTY: // CHECK-NEXT: [[UNWIND30]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK-NEXT: } @@ -407,8 +405,8 @@ let _ = testStructWithDefaultDestructor() // CHECK: ret void // CHECK-EMPTY: // CHECK-NEXT: [[UNWIND40]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK-NEXT: } @@ -422,18 +420,18 @@ let _ = testStructWithDefaultDestructor() // CHECK-NEXT: to label %[[CONT41:.*]] unwind label %[[UNWIND41:.*]] // CHECK: [[UNWIND41]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable // CHECK: define {{.*}} @"$s4test0A28ClassWithThrowingConstructors5Int32VyF"() #[[#SWIFTUWMETA]] personality -// CHECK: invoke {{.*}} @_ZN28ClassWithThrowingConstructorC{{.*}}(%{{.*}}* %[[#CONSTRUCTORTHIS:]]) +// CHECK: invoke {{.*}} @_ZN28ClassWithThrowingConstructorC{{.*}}(ptr %[[#CONSTRUCTORTHIS:]]) // CHECK-NEXT: to label %[[CONT42:.*]] unwind label %[[UNWIND42:.*]] // CHECK: [[UNWIND42]]: -// CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8* null +// CHECK-NEXT: landingpad { ptr, i32 } +// CHECK-NEXT: catch ptr null // CHECK-NEXT: call void @llvm.trap() // CHECK-NEXT: unreachable @@ -474,14 +472,14 @@ let _ = testStructWithDefaultDestructor() // DEBUG: ret // DEBUG-EMPTY: // DEBUG-NEXT: [[UNWIND1]]: -// DEBUG-NEXT: landingpad { i8*, i32 } -// DEBUG-NEXT: catch i8* null, !dbg ![[#DEBUGLOC_FREEFUNCTIONTHROWS1]] +// DEBUG-NEXT: landingpad { ptr, i32 } +// DEBUG-NEXT: catch ptr null, !dbg ![[#DEBUGLOC_FREEFUNCTIONTHROWS1]] // DEBUG-NEXT: call void @llvm.trap(), !dbg ![[#DEBUGLOC_TRAP1:]] // DEBUG-NEXT: unreachable, !dbg ![[#DEBUGLOC_TRAP1]] // DEBUG-EMPTY: // DEBUG-NEXT: [[UNWIND2]]: -// DEBUG-NEXT: landingpad { i8*, i32 } -// DEBUG-NEXT: catch i8* null, !dbg ![[#DEBUGLOC_FREEFUNCTIONTHROWS2]] +// DEBUG-NEXT: landingpad { ptr, i32 } +// DEBUG-NEXT: catch ptr null, !dbg ![[#DEBUGLOC_FREEFUNCTIONTHROWS2]] // DEBUG-NEXT: call void @llvm.trap(), !dbg ![[#DEBUGLOC_TRAP2:]] // DEBUG-NEXT: unreachable, !dbg ![[#DEBUGLOC_TRAP2]] // DEBUG-NEXT: } diff --git a/test/Interop/Cxx/exceptions/trap-on-exception-irgen-msvc.swift b/test/Interop/Cxx/exceptions/trap-on-exception-irgen-msvc.swift index db19b9cf8ef6d..d15504e776f09 100644 --- a/test/Interop/Cxx/exceptions/trap-on-exception-irgen-msvc.swift +++ b/test/Interop/Cxx/exceptions/trap-on-exception-irgen-msvc.swift @@ -1,8 +1,7 @@ // RUN: %empty-directory(%t) // RUN: split-file %S/trap-on-exception-irgen-itanium.swift %t -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop +// RUN: %target-swift-emit-ir %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s // REQUIRES: OS=windows-msvc diff --git a/test/Interop/Cxx/extern-var/extern-var-irgen.swift b/test/Interop/Cxx/extern-var/extern-var-irgen.swift index 3fb83321bbe7e..cbec5e8e26828 100644 --- a/test/Interop/Cxx/extern-var/extern-var-irgen.swift +++ b/test/Interop/Cxx/extern-var/extern-var-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s import ExternVar @@ -11,7 +10,7 @@ public func getCounter() -> CInt { // CHECK: @{{_ZN10Namespaced7counterE|"\?counter@Namespaced@@3HA"}} = external {{(dso_local )?}}global i32, align 4 // CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main10getCounters5Int32VyF"() #0 -// CHECK: [[LOAD:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{counter|"\?counter@@3HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: [[LOAD:%.*]] = load i32, ptr @{{counter|"\?counter@@3HA"}}, align 4 // CHECK: ret i32 [[LOAD]] public func setCounter(_ c: CInt) { @@ -19,22 +18,22 @@ public func setCounter(_ c: CInt) { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main10setCounteryys5Int32VF"(i32 %0) #0 -// CHECK: store i32 %0, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{counter|"\?counter@@3HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: store i32 %0, ptr @{{counter|"\?counter@@3HA"}}, align 4 public func getNamespacedCounter() -> CInt { return Namespaced.counter } // CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main20getNamespacedCounters5Int32VyF"() #0 -// CHECK: load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN10Namespaced7counterE|"\?counter@Namespaced@@3HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 -// CHECK: ret i32 %1 +// CHECK: load i32, ptr @{{_ZN10Namespaced7counterE|"\?counter@Namespaced@@3HA"}}, align 4 +// CHECK: ret i32 %0 public func setNamespacedCounter(_ c: CInt) { Namespaced.counter = c } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main20setNamespacedCounteryys5Int32VF"(i32 %0) #0 -// CHECK: store i32 %0, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN10Namespaced7counterE|"\?counter@Namespaced@@3HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: store i32 %0, ptr @{{_ZN10Namespaced7counterE|"\?counter@Namespaced@@3HA"}}, align 4 func modifyInout(_ c: inout CInt) { c = 42 @@ -45,4 +44,4 @@ public func passingVarAsInout() { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main17passingVarAsInoutyyF"() #0 -// CHECK: call swiftcc void @"$s4main11modifyInoutyys5Int32VzF"(%Ts5Int32V* nocapture dereferenceable(4) bitcast (i32* @{{counter|"\?counter@@3HA"}} to %Ts5Int32V*)) +// CHECK: call swiftcc void @"$s4main11modifyInoutyys5Int32VzF"(ptr nocapture dereferenceable(4) @{{counter|"\?counter@@3HA"}}) diff --git a/test/Interop/Cxx/foreign-reference/base-class-layout-irgen.swift b/test/Interop/Cxx/foreign-reference/base-class-layout-irgen.swift index b80b6eec37708..cfbda03cb9b2b 100644 --- a/test/Interop/Cxx/foreign-reference/base-class-layout-irgen.swift +++ b/test/Interop/Cxx/foreign-reference/base-class-layout-irgen.swift @@ -1,12 +1,11 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -module-name=test -disable-availability-checking | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -module-name=test -disable-availability-checking +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -module-name=test -disable-availability-checking | %FileCheck %s import MemberLayout // CHECK: %TSo7IntBaseV = type <{ [4 x i8], %Ts5Int32V }> -// CHECK-LABEL: define {{.*}}swiftcc i32 @"$s4testAA1ys5Int32VSo7IntBaseV_tF"(%TSo7IntBaseV* %0) -// CHECK: getelementptr inbounds %TSo7IntBaseV, %TSo7IntBaseV* %0, i32 0, i32 1 +// CHECK-LABEL: define {{.*}}swiftcc i32 @"$s4testAA1ys5Int32VSo7IntBaseV_tF"(ptr %0) +// CHECK: getelementptr inbounds %TSo7IntBaseV, ptr %0, i32 0, i32 1 public func test(y: IntBase) -> CInt { return y.i } diff --git a/test/Interop/Cxx/foreign-reference/move-only-irgen.swift b/test/Interop/Cxx/foreign-reference/move-only-irgen.swift index 25a73ca47823d..871a5598fbda5 100644 --- a/test/Interop/Cxx/foreign-reference/move-only-irgen.swift +++ b/test/Interop/Cxx/foreign-reference/move-only-irgen.swift @@ -1,28 +1,21 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking | %FileCheck %s // // XFAIL: OS=linux-android, OS=linux-androideabi import MoveOnly -// TODO: this should not be opaque. -// CHECK: %TSo8MoveOnlyV = type opaque -// CHECK: %struct.MoveOnly = type { i8 } - // CHECK-LABEL: define {{.*}}swiftcc void @"$s4main4testyyF" -// CHECK: [[X:%.*]] = alloca %TSo8MoveOnlyV* -// CHECK: [[TMP:%.*]] = alloca %TSo8MoveOnlyV* +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[TMP:%.*]] = alloca ptr -// CHECK: [[CREATED:%.*]] = call %struct.MoveOnly* @{{_ZN8MoveOnly6createEv|"\?create\@MoveOnly\@\@SAPEAU1\@XZ"}}() -// CHECK: [[SWIFT_CREATED:%.*]] = bitcast %struct.MoveOnly* [[CREATED]] to %TSo8MoveOnlyV* -// CHECK: store %TSo8MoveOnlyV* [[SWIFT_CREATED]], %TSo8MoveOnlyV** [[X]] -// CHECK: store %TSo8MoveOnlyV* [[SWIFT_CREATED]], %TSo8MoveOnlyV** [[TMP]] +// CHECK: [[CREATED:%.*]] = call ptr @{{_ZN8MoveOnly6createEv|"\?create\@MoveOnly\@\@SAPEAU1\@XZ"}}() +// CHECK: store ptr [[CREATED]], ptr [[X]] +// CHECK: store ptr [[CREATED]], ptr [[TMP]] -// CHECK: [[TMP_LOAD:%.*]] = load %TSo8MoveOnlyV*, %TSo8MoveOnlyV** [[TMP]] -// CHECK: [[CLANG_CREATED:%.*]] = bitcast %TSo8MoveOnlyV* [[TMP_LOAD]] to %struct.MoveOnly* -// CHECK: call i32 @{{_ZNK8MoveOnly4testEv|"\?test\@MoveOnly\@\@QEBAHXZ"}}(%struct.MoveOnly* [[CLANG_CREATED]]) +// CHECK: [[TMP_LOAD:%.*]] = load ptr, ptr [[TMP]] +// CHECK: call i32 @{{_ZNK8MoveOnly4testEv|"\?test\@MoveOnly\@\@QEBAHXZ"}}(ptr [[TMP_LOAD]]) // CHECK: ret void diff --git a/test/Interop/Cxx/foreign-reference/pod-irgen.swift b/test/Interop/Cxx/foreign-reference/pod-irgen.swift index 54c3e0280f15c..c724e709ead59 100644 --- a/test/Interop/Cxx/foreign-reference/pod-irgen.swift +++ b/test/Interop/Cxx/foreign-reference/pod-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking | %FileCheck %s // // XFAIL: OS=linux-android, OS=linux-androideabi @@ -11,21 +10,19 @@ import POD // CHECK-LABEL: define {{.*}}swiftcc void @"$s4main4testyyF" -// CHECK: [[X:%.*]] = alloca %TSo7IntPairV* -// CHECK: [[TMP:%.*]] = alloca %TSo7IntPairV* +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[TMP:%.*]] = alloca ptr -// CHECK: [[CREATED:%.*]] = call %struct.IntPair* @{{_ZN7IntPair6createEv|"\?create\@IntPair\@\@SAPEAU1\@XZ"}}() -// CHECK: [[SWIFT_CREATED:%.*]] = bitcast %struct.IntPair* [[CREATED]] to %TSo7IntPairV* -// CHECK: store %TSo7IntPairV* [[SWIFT_CREATED]], %TSo7IntPairV** [[X]] +// CHECK: [[CREATED:%.*]] = call ptr @{{_ZN7IntPair6createEv|"\?create\@IntPair\@\@SAPEAU1\@XZ"}}() +// CHECK: store ptr [[CREATED]], ptr [[X]] -// CHECK: [[B_FIELD:%.*]] = getelementptr inbounds %TSo7IntPairV, %TSo7IntPairV* [[SWIFT_CREATED]], i32 0, i32 1 -// CHECK: [[INT_VALUE:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[B_FIELD]], i32 0, i32 0 -// CHECK: store i32 42, i32* [[INT_VALUE]], align 4 +// CHECK: [[B_FIELD:%.*]] = getelementptr inbounds %TSo7IntPairV, ptr [[CREATED]], i32 0, i32 1 +// CHECK: [[INT_VALUE:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[B_FIELD]], i32 0, i32 0 +// CHECK: store i32 42, ptr [[INT_VALUE]], align 4 -// CHECK: store %TSo7IntPairV* [[SWIFT_CREATED]], %TSo7IntPairV** [[TMP]] -// CHECK: [[TMP_LOAD:%.*]] = load %TSo7IntPairV*, %TSo7IntPairV** [[TMP]] -// CHECK: [[CLANG_CREATED:%.*]] = bitcast %TSo7IntPairV* [[TMP_LOAD]] to %struct.IntPair* -// CHECK: call i32 @{{_ZNK7IntPair4testEv|"\?test\@IntPair\@\@QEBAHXZ"}}(%struct.IntPair* [[CLANG_CREATED]]) +// CHECK: store ptr [[CREATED]], ptr [[TMP]] +// CHECK: [[TMP_LOAD:%.*]] = load ptr, ptr [[TMP]] +// CHECK: call i32 @{{_ZNK7IntPair4testEv|"\?test\@IntPair\@\@QEBAHXZ"}}(ptr [[TMP_LOAD]]) // CHECK: ret void diff --git a/test/Interop/Cxx/foreign-reference/singleton-irgen.swift b/test/Interop/Cxx/foreign-reference/singleton-irgen.swift index d678f2e6ab92e..6742c70d4f7e0 100644 --- a/test/Interop/Cxx/foreign-reference/singleton-irgen.swift +++ b/test/Interop/Cxx/foreign-reference/singleton-irgen.swift @@ -1,30 +1,24 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -validate-tbd-against-ir=none -disable-llvm-verify -Xcc -fignore-exceptions -disable-availability-checking | %FileCheck %s // // XFAIL: OS=linux-android, OS=linux-androideabi import Singleton -// TODO: this should not be opaque. -// CHECK: %TSo21DeletedSpecialMembersV = type opaque // CHECK: %struct.DeletedSpecialMembers = type { i32 } // CHECK-LABEL: define {{.*}}swiftcc void @"$s4main4testyyF" -// CHECK: [[X:%.*]] = alloca %TSo21DeletedSpecialMembersV* -// CHECK: [[TMP:%.*]] = alloca %TSo21DeletedSpecialMembersV* +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[TMP:%.*]] = alloca ptr -// CHECK: [[CREATED:%.*]] = call %struct.DeletedSpecialMembers* @{{_ZN21DeletedSpecialMembers6createEv|"\?create\@DeletedSpecialMembers\@\@SAPEAU1\@XZ"}}() -// CHECK: [[SWIFT_CREATED:%.*]] = bitcast %struct.DeletedSpecialMembers* [[CREATED]] to %TSo21DeletedSpecialMembersV* -// CHECK: store %TSo21DeletedSpecialMembersV* [[SWIFT_CREATED]], %TSo21DeletedSpecialMembersV** [[X]] -// CHECK: store %TSo21DeletedSpecialMembersV* [[SWIFT_CREATED]], %TSo21DeletedSpecialMembersV** [[TMP]] +// CHECK: [[CREATED:%.*]] = call ptr @{{_ZN21DeletedSpecialMembers6createEv|"\?create\@DeletedSpecialMembers\@\@SAPEAU1\@XZ"}}() +// CHECK: store ptr [[CREATED]], ptr [[X]] +// CHECK: store ptr [[CREATED]], ptr [[TMP]] -// CHECK: [[TMP_LOAD:%.*]] = load %TSo21DeletedSpecialMembersV*, %TSo21DeletedSpecialMembersV** [[TMP]] -// CHECK: [[CLANG_CREATED:%.*]] = bitcast %TSo21DeletedSpecialMembersV* [[TMP_LOAD]] to %struct.DeletedSpecialMembers* -// CHECK: call i32 @{{_ZNK21DeletedSpecialMembers4testEv|"\?test\@DeletedSpecialMembers\@\@QEBAHXZ"}}(%struct.DeletedSpecialMembers* [[CLANG_CREATED]]) +// CHECK: [[TMP_LOAD:%.*]] = load ptr, ptr [[TMP]] +// CHECK: call i32 @{{_ZNK21DeletedSpecialMembers4testEv|"\?test\@DeletedSpecialMembers\@\@QEBAHXZ"}}(ptr [[TMP_LOAD]]) -// CHECK: [[FROM:%.*]] = bitcast %TSo21DeletedSpecialMembersV* [[SWIFT_CREATED]] to %struct.DeletedSpecialMembers* -// CHECK: call void @{{_Z8mutateItR21DeletedSpecialMembers|"\?mutateIt\@\@YAXAEAUDeletedSpecialMembers\@\@\@Z"}}(%struct.DeletedSpecialMembers* [[FROM]]) +// CHECK: call void @{{_Z8mutateItR21DeletedSpecialMembers|"\?mutateIt\@\@YAXAEAUDeletedSpecialMembers\@\@\@Z"}}(ptr [[CREATED]]) // CHECK: ret void diff --git a/test/Interop/Cxx/foreign-reference/unimportable-member-layout-irgen.swift b/test/Interop/Cxx/foreign-reference/unimportable-member-layout-irgen.swift index 77e2be2226a2c..37122a035e1b2 100644 --- a/test/Interop/Cxx/foreign-reference/unimportable-member-layout-irgen.swift +++ b/test/Interop/Cxx/foreign-reference/unimportable-member-layout-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -module-name=test -disable-availability-checking | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -module-name=test -disable-availability-checking +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -module-name=test -disable-availability-checking | %FileCheck %s import MemberLayout @@ -11,26 +10,26 @@ import MemberLayout // CHECK: %TSo21UnimportableMemberRefV = type <{ %Ts5Int32V, %Ts5Int32V, [8 x i8], %Ts5Int32V }> // CHECK: %TSo23UnimportableMemberValueV = type <{ %Ts5Int32V, %Ts5Int32V, [8 x i8], %Ts5Int32V }> -// CHECK-LABEL: define {{.*}}swiftcc i8 @"$s4testAA1ys4Int8VSo10IntCharRefV_tF"(%TSo10IntCharRefV* %0) -// CHECK: getelementptr inbounds %TSo10IntCharRefV, %TSo10IntCharRefV* %0, i32 0, i32 1 +// CHECK-LABEL: define {{.*}}swiftcc i8 @"$s4testAA1ys4Int8VSo10IntCharRefV_tF"(ptr %0) +// CHECK: getelementptr inbounds %TSo10IntCharRefV, ptr %0, i32 0, i32 1 public func test(y: IntCharRef) -> CChar { return y.b } -// CHECK-LABEL: define {{.*}}swiftcc i8 @"$s4testAA1ys4Int8VSo12IntCharValueV_tF"(%TSo12IntCharValueV* %0) -// CHECK: getelementptr inbounds %TSo12IntCharValueV, %TSo12IntCharValueV* %0, i32 0, i32 1 +// CHECK-LABEL: define {{.*}}swiftcc i8 @"$s4testAA1ys4Int8VSo12IntCharValueV_tF"(ptr %0) +// CHECK: getelementptr inbounds %TSo12IntCharValueV, ptr %0, i32 0, i32 1 public func test(y: IntCharValue) -> CChar { return y.b } -// CHECK-LABEL: define {{.*}}swiftcc i32 @"$s4testAA1ys5Int32VSo21UnimportableMemberRefV_tF"(%TSo21UnimportableMemberRefV* %0) -// CHECK: getelementptr inbounds %TSo21UnimportableMemberRefV, %TSo21UnimportableMemberRefV* %0, i32 0, i32 3 +// CHECK-LABEL: define {{.*}}swiftcc i32 @"$s4testAA1ys5Int32VSo21UnimportableMemberRefV_tF"(ptr %0) +// CHECK: getelementptr inbounds %TSo21UnimportableMemberRefV, ptr %0, i32 0, i32 3 public func test(y: UnimportableMemberRef) -> CInt { return y.y } -// CHECK-LABEL: define {{.*}}swiftcc i32 @"$s4testAA1ys5Int32VSo23UnimportableMemberValueV_tF"(%TSo23UnimportableMemberValueV* %0) -// CHECK: getelementptr inbounds %TSo23UnimportableMemberValueV, %TSo23UnimportableMemberValueV* %0, i32 0, i32 3 +// CHECK-LABEL: define {{.*}}swiftcc i32 @"$s4testAA1ys5Int32VSo23UnimportableMemberValueV_tF"(ptr %0) +// CHECK: getelementptr inbounds %TSo23UnimportableMemberValueV, ptr %0, i32 0, i32 3 public func test(y: UnimportableMemberValue) -> CInt { return y.y } diff --git a/test/Interop/Cxx/namespace/classes-irgen.swift b/test/Interop/Cxx/namespace/classes-irgen.swift index 5f20567a8d245..5433593c16a02 100644 --- a/test/Interop/Cxx/namespace/classes-irgen.swift +++ b/test/Interop/Cxx/namespace/classes-irgen.swift @@ -1,13 +1,12 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s import Classes // CHECK-LABEL: define {{.*}}void @"$s4main10basicTestsyyF"() -// CHECK: call i8* @{{_ZN10ClassesNS111BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS1@@QEAAPEBDXZ"}}(%"struct.ClassesNS1::BasicStruct"* -// CHECK: call i8* @{{_ZN10ClassesNS110ClassesNS211BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS2@ClassesNS1@@QEAAPEBDXZ"}}(%"struct.ClassesNS1::ClassesNS2::BasicStruct"* -// CHECK: call i8* @{{_ZN10ClassesNS311BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS3@@QEAAPEBDXZ"}}(%"struct.ClassesNS3::BasicStruct"* -// CHECK: call i8* @{{_ZN10ClassesNS111BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS1@@QEAAPEBDXZ"}}(%"struct.ClassesNS1::BasicStruct"* +// CHECK: call ptr @{{_ZN10ClassesNS111BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS1@@QEAAPEBDXZ"}}(ptr +// CHECK: call ptr @{{_ZN10ClassesNS110ClassesNS211BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS2@ClassesNS1@@QEAAPEBDXZ"}}(ptr +// CHECK: call ptr @{{_ZN10ClassesNS311BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS3@@QEAAPEBDXZ"}}(ptr +// CHECK: call ptr @{{_ZN10ClassesNS111BasicStruct11basicMemberEv|"\?basicMember@BasicStruct@ClassesNS1@@QEAAPEBDXZ"}}(ptr // CHECK: ret void public func basicTests() { var basicStructInst = ClassesNS1.BasicStruct() @@ -24,8 +23,8 @@ public func basicTests() { } // CHECK-LABEL: define {{.*}}void @"$s4main15forwardDeclaredyyF"() -// CHECK: call i8* @{{_ZN10ClassesNS121ForwardDeclaredStruct11basicMemberEv|"\?basicMember@ForwardDeclaredStruct@ClassesNS1@@QEAAPEBDXZ"}}(%"struct.ClassesNS1::ForwardDeclaredStruct"* -// CHECK: call i8* @{{_ZN10ClassesNS110ClassesNS221ForwardDeclaredStruct11basicMemberEv|"\?basicMember@ForwardDeclaredStruct@ClassesNS2@ClassesNS1@@QEAAPEBDXZ"}}(%"struct.ClassesNS1::ClassesNS2::ForwardDeclaredStruct"* +// CHECK: call ptr @{{_ZN10ClassesNS121ForwardDeclaredStruct11basicMemberEv|"\?basicMember@ForwardDeclaredStruct@ClassesNS1@@QEAAPEBDXZ"}}(ptr +// CHECK: call ptr @{{_ZN10ClassesNS110ClassesNS221ForwardDeclaredStruct11basicMemberEv|"\?basicMember@ForwardDeclaredStruct@ClassesNS2@ClassesNS1@@QEAAPEBDXZ"}}(ptr // CHECK: ret void public func forwardDeclared() { var forwardDeclaredStruct = ClassesNS1.ForwardDeclaredStruct() diff --git a/test/Interop/Cxx/namespace/free-functions-irgen.swift b/test/Interop/Cxx/namespace/free-functions-irgen.swift index 5faf418c3788e..c2dae49a59e18 100644 --- a/test/Interop/Cxx/namespace/free-functions-irgen.swift +++ b/test/Interop/Cxx/namespace/free-functions-irgen.swift @@ -1,12 +1,11 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s import FreeFunctions // CHECK-LABEL: define {{.*}}void @"$s4main10basicTestsyyF"() -// CHECK: call i8* @{{_ZN12FunctionsNS121basicFunctionTopLevelEv|"\?basicFunctionTopLevel@FunctionsNS1@@YAPEBDXZ"}}() -// CHECK: call i8* @{{_ZN12FunctionsNS112FunctionsNS224basicFunctionSecondLevelEv|"\?basicFunctionSecondLevel@FunctionsNS2@FunctionsNS1@@YAPEBDXZ"}}() -// CHECK: call i8* @{{_ZN12FunctionsNS112FunctionsNS212FunctionsNS324basicFunctionLowestLevelEv|"\?basicFunctionLowestLevel@FunctionsNS3@FunctionsNS2@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS121basicFunctionTopLevelEv|"\?basicFunctionTopLevel@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS112FunctionsNS224basicFunctionSecondLevelEv|"\?basicFunctionSecondLevel@FunctionsNS2@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS112FunctionsNS212FunctionsNS324basicFunctionLowestLevelEv|"\?basicFunctionLowestLevel@FunctionsNS3@FunctionsNS2@FunctionsNS1@@YAPEBDXZ"}}() // CHECK: ret void public func basicTests() { FunctionsNS1.basicFunctionTopLevel() @@ -15,8 +14,8 @@ public func basicTests() { } // CHECK-LABEL: define {{.*}}void @"$s4main20forwardDeclaredFuncsyyF"() -// CHECK: call i8* @{{_ZN12FunctionsNS115forwardDeclaredEv|"\?forwardDeclared@FunctionsNS1@@YAPEBDXZ"}}() -// CHECK: call i8* @{{_ZN12FunctionsNS116definedOutOfLineEv|"\?definedOutOfLine@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS115forwardDeclaredEv|"\?forwardDeclared@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS116definedOutOfLineEv|"\?definedOutOfLine@FunctionsNS1@@YAPEBDXZ"}}() // CHECK: ret void public func forwardDeclaredFuncs() { FunctionsNS1.forwardDeclared() @@ -24,10 +23,10 @@ public func forwardDeclaredFuncs() { } // CHECK-LABEL: define {{.*}}void @"$s4main9sameNamesyyF"() -// CHECK: call i8* @{{_ZN12FunctionsNS115sameNameInChildEv|"\?sameNameInChild@FunctionsNS1@@YAPEBDXZ"}}() -// CHECK: call i8* @{{_ZN12FunctionsNS117sameNameInSiblingEv|"\?sameNameInSibling@FunctionsNS1@@YAPEBDXZ"}}() -// CHECK: call i8* @{{_ZN12FunctionsNS112FunctionsNS215sameNameInChildEv|"\?sameNameInChild@FunctionsNS2@FunctionsNS1@@YAPEBDXZ"}}() -// CHECK: call i8* @{{_ZN12FunctionsNS417sameNameInSiblingEv|"\?sameNameInSibling@FunctionsNS4@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS115sameNameInChildEv|"\?sameNameInChild@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS117sameNameInSiblingEv|"\?sameNameInSibling@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS112FunctionsNS215sameNameInChildEv|"\?sameNameInChild@FunctionsNS2@FunctionsNS1@@YAPEBDXZ"}}() +// CHECK: call ptr @{{_ZN12FunctionsNS417sameNameInSiblingEv|"\?sameNameInSibling@FunctionsNS4@@YAPEBDXZ"}}() // CHECK: ret void public func sameNames() { FunctionsNS1.sameNameInChild() diff --git a/test/Interop/Cxx/namespace/templates-irgen.swift b/test/Interop/Cxx/namespace/templates-irgen.swift index b74d00868b064..8cae7faca6903 100644 --- a/test/Interop/Cxx/namespace/templates-irgen.swift +++ b/test/Interop/Cxx/namespace/templates-irgen.swift @@ -1,12 +1,11 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s import Templates // CHECK-LABEL: define {{.*}}void @"$s4main10basicTestsyyF"() -// CHECK: call i8* @{{_ZN12TemplatesNS121basicFunctionTemplateIiEEPKcT_|"\?\?\$basicFunctionTemplate@H@TemplatesNS1@@YAPEBDH@Z"}}(i32 0) -// CHECK: call i8* @{{_ZN12TemplatesNS118BasicClassTemplateIcE11basicMemberEv|"\?basicMember@\?\$BasicClassTemplate@D@TemplatesNS1@@QEAAPEBDXZ"}}(%"struct.TemplatesNS1::BasicClassTemplate"* -// CHECK: call i8* @{{_ZN12TemplatesNS112TemplatesNS229takesClassTemplateFromSiblingENS_12TemplatesNS318BasicClassTemplateIcEE|"\?takesClassTemplateFromSibling@TemplatesNS2@TemplatesNS1@@YAPEBDU\?\$BasicClassTemplate@D@TemplatesNS3@2@@Z"}}({{(i8 %[0-9]+)?}}) +// CHECK: call ptr @{{_ZN12TemplatesNS121basicFunctionTemplateIiEEPKcT_|"\?\?\$basicFunctionTemplate@H@TemplatesNS1@@YAPEBDH@Z"}}(i32 0) +// CHECK: call ptr @{{_ZN12TemplatesNS118BasicClassTemplateIcE11basicMemberEv|"\?basicMember@\?\$BasicClassTemplate@D@TemplatesNS1@@QEAAPEBDXZ"}}(ptr +// CHECK: call ptr @{{_ZN12TemplatesNS112TemplatesNS229takesClassTemplateFromSiblingENS_12TemplatesNS318BasicClassTemplateIcEE|"\?takesClassTemplateFromSibling@TemplatesNS2@TemplatesNS1@@YAPEBDU\?\$BasicClassTemplate@D@TemplatesNS3@2@@Z"}}({{(i8 %[0-9]+)?}}) // CHECK: ret void public func basicTests() { TemplatesNS1.basicFunctionTemplate(Int32(0)) @@ -18,10 +17,10 @@ public func basicTests() { } // CHECK-LABEL: define {{.*}}void @"$s4main22forwardDeclaredClassesyyF"() -// CHECK: call i8* @{{_ZN12TemplatesNS112TemplatesNS231forwardDeclaredFunctionTemplateIiEEPKcT_|"\?\?\$forwardDeclaredFunctionTemplate@H@TemplatesNS2@TemplatesNS1@@YAPEBDH@Z"}}(i32 0) -// CHECK: call i8* @{{_ZN12TemplatesNS112TemplatesNS228ForwardDeclaredClassTemplateIcE11basicMemberEv|"\?basicMember@\?\$ForwardDeclaredClassTemplate@D@TemplatesNS2@TemplatesNS1@@QEAAPEBDXZ"}}(%"struct.TemplatesNS1::TemplatesNS2::ForwardDeclaredClassTemplate"* -// CHECK: call i8* @{{_ZN12TemplatesNS112TemplatesNS240forwardDeclaredFunctionTemplateOutOfLineIiEEPKcT_|"\?\?\$forwardDeclaredFunctionTemplateOutOfLine@H@TemplatesNS2@TemplatesNS1@@YAPEBDH@Z"}}(i32 0) -// CHECK: call i8* @{{_ZN12TemplatesNS112TemplatesNS237ForwardDeclaredClassTemplateOutOfLineIcE11basicMemberEv|"\?basicMember@\?\$ForwardDeclaredClassTemplateOutOfLine@D@TemplatesNS2@TemplatesNS1@@QEAAPEBDXZ"}}(%"struct.TemplatesNS1::TemplatesNS2::ForwardDeclaredClassTemplateOutOfLine"* +// CHECK: call ptr @{{_ZN12TemplatesNS112TemplatesNS231forwardDeclaredFunctionTemplateIiEEPKcT_|"\?\?\$forwardDeclaredFunctionTemplate@H@TemplatesNS2@TemplatesNS1@@YAPEBDH@Z"}}(i32 0) +// CHECK: call ptr @{{_ZN12TemplatesNS112TemplatesNS228ForwardDeclaredClassTemplateIcE11basicMemberEv|"\?basicMember@\?\$ForwardDeclaredClassTemplate@D@TemplatesNS2@TemplatesNS1@@QEAAPEBDXZ"}}(ptr +// CHECK: call ptr @{{_ZN12TemplatesNS112TemplatesNS240forwardDeclaredFunctionTemplateOutOfLineIiEEPKcT_|"\?\?\$forwardDeclaredFunctionTemplateOutOfLine@H@TemplatesNS2@TemplatesNS1@@YAPEBDH@Z"}}(i32 0) +// CHECK: call ptr @{{_ZN12TemplatesNS112TemplatesNS237ForwardDeclaredClassTemplateOutOfLineIcE11basicMemberEv|"\?basicMember@\?\$ForwardDeclaredClassTemplateOutOfLine@D@TemplatesNS2@TemplatesNS1@@QEAAPEBDXZ"}}(ptr // CHECK: ret void public func forwardDeclaredClasses() { TemplatesNS1.TemplatesNS2.forwardDeclaredFunctionTemplate(Int32(0)) diff --git a/test/Interop/Cxx/operators/member-inline-irgen.swift b/test/Interop/Cxx/operators/member-inline-irgen.swift index 8aa884ee515f6..6dd55a7048496 100644 --- a/test/Interop/Cxx/operators/member-inline-irgen.swift +++ b/test/Interop/Cxx/operators/member-inline-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions | %FileCheck %s // // We should be able to support windows now. We will remove XFAIL in follow up // XFAIL: windows @@ -8,45 +7,45 @@ import MemberInline public func sub(_ lhs: inout LoadableIntWrapper, _ rhs: LoadableIntWrapper) -> LoadableIntWrapper { lhs - rhs } -// CHECK: call [[RESA:i32|i64]] [[NAMEA:@(_ZN18LoadableIntWrappermiES_|"\?\?GLoadableIntWrapper@@QEAA\?AU0@U0@@Z")]](%struct.LoadableIntWrapper* {{%[0-9]+}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(.*\) align 4}} {{%[0-9]+}}) +// CHECK: call [[RESA:i32|i64]] [[NAMEA:@(_ZN18LoadableIntWrappermiES_|"\?\?GLoadableIntWrapper@@QEAA\?AU0@U0@@Z")]](ptr {{%[0-9]+}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(.*\) align 4}} {{%[0-9]+}}) public func call(_ wrapper: inout LoadableIntWrapper, _ arg: Int32) -> Int32 { wrapper(arg) } -// CHECK: call [[RES:i32|i64]] [[NAME:@(_ZN18LoadableIntWrapperclEi|"\?\?GLoadableIntWrapper@@QEAAHH@Z")]](%struct.LoadableIntWrapper* {{%[0-9]+}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(.*\)}}{{.*}}) -// CHECK: define {{.*}}[[RES]] [[NAME]](%struct.LoadableIntWrapper* {{.*}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(%struct.LoadableIntWrapper\)}}{{.*}}) +// CHECK: call [[RES:i32|i64]] [[NAME:@(_ZN18LoadableIntWrapperclEi|"\?\?GLoadableIntWrapper@@QEAAHH@Z")]](ptr {{%[0-9]+}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(.*\)}}{{.*}}) +// CHECK: define {{.*}}[[RES]] [[NAME]](ptr {{.*}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(%struct.LoadableIntWrapper\)}}{{.*}}) public func call(_ wrapper: inout AddressOnlyIntWrapper) -> Int32 { wrapper() } -// CHECK: call [[RES:i32|i64]] [[NAME:@(_ZN21AddressOnlyIntWrapperclEv|"\?\?GAddressOnlyIntWrapper@@QEAAHXZ")]](%struct.AddressOnlyIntWrapper* {{.*}}) -// CHECK: define {{.*}}[[RES]] [[NAME]](%struct.AddressOnlyIntWrapper* {{.*}}) +// CHECK: call [[RES:i32|i64]] [[NAME:@(_ZN21AddressOnlyIntWrapperclEv|"\?\?GAddressOnlyIntWrapper@@QEAAHXZ")]](ptr {{.*}}) +// CHECK: define {{.*}}[[RES]] [[NAME]](ptr {{.*}}) public func index(_ arr: inout ReadOnlyIntArray, _ arg: Int32) -> Int32 { arr[arg] } -// CHECK: call [[RES:i32|i64]]* [[NAME:@(_ZNK16ReadOnlyIntArrayixEi|"\?\?AReadOnlyIntArray@@QEBAAEBHH@Z")]](%struct.ReadOnlyIntArray* {{.*}}, {{i32|i64}}{{.*}}) -// CHECK: define {{.*}}[[RES]]* [[NAME]](%struct.ReadOnlyIntArray* {{.*}}, {{i32|\[1 x i32\]|i64|%struct.ReadOnlyIntArray\* byval\(%struct.ReadOnlyIntArray\)}}{{.*}}) -// CHECK: [[THIS:%.*]] = load %struct.ReadOnlyIntArray*, %struct.ReadOnlyIntArray** -// CHECK: [[VALUES:%.*]] = getelementptr inbounds %struct.ReadOnlyIntArray, %struct.ReadOnlyIntArray* [[THIS]] -// CHECK: [[VALUE:%.*]] = getelementptr inbounds [5 x {{i32|i64}}], [5 x {{i32|i64}}]* [[VALUES]] -// CHECK: ret {{i32|i64}}* [[VALUE]] +// CHECK: call ptr [[NAME:@(_ZNK16ReadOnlyIntArrayixEi|"\?\?AReadOnlyIntArray@@QEBAAEBHH@Z")]](ptr {{.*}}, {{i32|i64}}{{.*}}) +// CHECK: define {{.*}}ptr [[NAME]](ptr {{.*}}, {{i32|\[1 x i32\]|i64|%struct.ReadOnlyIntArray\* byval\(%struct.ReadOnlyIntArray\)}}{{.*}}) +// CHECK: [[THIS:%.*]] = load ptr, ptr +// CHECK: [[VALUES:%.*]] = getelementptr inbounds %struct.ReadOnlyIntArray, ptr [[THIS]] +// CHECK: [[VALUE:%.*]] = getelementptr inbounds [5 x {{i32|i64}}], ptr [[VALUES]] +// CHECK: ret ptr [[VALUE]] public func index(_ arr: inout ReadWriteIntArray, _ arg: Int32, _ val: Int32) { arr[arg] = val } -// CHECK: call [[RES:i32|i64]]* [[NAME:@(_ZN17ReadWriteIntArrayixEi|"\?\?AReadWriteIntArray@@QEAAAEAHH@Z")]](%struct.ReadWriteIntArray* {{.*}}, {{i32|i64}}{{.*}}) -// CHECK: define {{.*}}[[RES]]* [[NAME]](%struct.ReadWriteIntArray* {{.*}}, {{i32|\[1 x i32\]|i64|%struct.ReadWriteIntArray\* byval\(%struct.ReadWriteIntArray\)}}{{.*}}) -// CHECK: [[THIS:%.*]] = load %struct.ReadWriteIntArray*, %struct.ReadWriteIntArray** -// CHECK: [[VALUES:%.*]] = getelementptr inbounds %struct.ReadWriteIntArray, %struct.ReadWriteIntArray* [[THIS]] -// CHECK: [[VALUE:%.*]] = getelementptr inbounds [5 x {{i32|i64}}], [5 x {{i32|i64}}]* [[VALUES]] -// CHECK: ret {{i32|i64}}* [[VALUE]] +// CHECK: call ptr [[NAME:@(_ZN17ReadWriteIntArrayixEi|"\?\?AReadWriteIntArray@@QEAAAEAHH@Z")]](ptr {{.*}}, {{i32|i64}}{{.*}}) +// CHECK: define {{.*}}ptr [[NAME]](ptr {{.*}}, {{i32|\[1 x i32\]|i64|%struct.ReadWriteIntArray\* byval\(%struct.ReadWriteIntArray\)}}{{.*}}) +// CHECK: [[THIS:%.*]] = load ptr, ptr +// CHECK: [[VALUES:%.*]] = getelementptr inbounds %struct.ReadWriteIntArray, ptr [[THIS]] +// CHECK: [[VALUE:%.*]] = getelementptr inbounds [5 x {{i32|i64}}], ptr [[VALUES]] +// CHECK: ret ptr [[VALUE]] public func index(_ arr: inout NonTrivialIntArrayByVal, _ arg: Int32) -> Int32 { arr[arg] } -// CHECK: call [[RES:i32|i64]] [[NAME:@(_ZNK23NonTrivialIntArrayByValixEi|"\?\?ANonTrivialIntArrayByVal@@QEBAAEBHH@Z")]](%struct.NonTrivialIntArrayByVal* {{.*}}, {{i32|i64}}{{.*}}) +// CHECK: call [[RES:i32|i64]] [[NAME:@(_ZNK23NonTrivialIntArrayByValixEi|"\?\?ANonTrivialIntArrayByVal@@QEBAAEBHH@Z")]](ptr {{.*}}, {{i32|i64}}{{.*}}) -// CHECK: define {{.*}}[[RES]] [[NAME]](%struct.NonTrivialIntArrayByVal* {{.*}}, {{i32|\[1 x i32\]|i64|%struct.NonTrivialIntArrayByVal\* byval\(%struct.NonTrivialIntArrayByVal\)}}{{.*}}) -// CHECK: [[THIS:%.*]] = load %struct.NonTrivialIntArrayByVal*, %struct.NonTrivialIntArrayByVal** -// CHECK: [[VALUES:%.*]] = getelementptr inbounds %struct.NonTrivialIntArrayByVal, %struct.NonTrivialIntArrayByVal* [[THIS]] -// CHECK: [[VALUE:%.*]] = getelementptr inbounds [5 x {{i32|i64}}], [5 x {{i32|i64}}]* [[VALUES]] -// CHECK: [[VALUE2:%.*]] = load {{i32|i64}}, {{i32|i64}}* [[VALUE]] +// CHECK: define {{.*}}[[RES:i32|i64]] [[NAME]](ptr {{.*}}, {{i32|\[1 x i32\]|i64|%struct.NonTrivialIntArrayByVal\* byval\(%struct.NonTrivialIntArrayByVal\)}}{{.*}}) +// CHECK: [[THIS:%.*]] = load ptr, ptr +// CHECK: [[VALUES:%.*]] = getelementptr inbounds %struct.NonTrivialIntArrayByVal, ptr [[THIS]] +// CHECK: [[VALUE:%.*]] = getelementptr inbounds [5 x {{i32|i64}}], ptr [[VALUES]] +// CHECK: [[VALUE2:%.*]] = load {{i32|i64}}, ptr [[VALUE]] // CHECK: ret {{i32|i64}} [[VALUE2]] -// CHECK: define {{.*}}[[RESA]] [[NAMEA]](%struct.LoadableIntWrapper* {{.*}}, {{i32 .*%.*.coerce|\[1 x i32\] .*%.*.coerce|i64 .*%.*.coerce|%struct.LoadableIntWrapper\* .*byval\(%struct.LoadableIntWrapper\).*}}) +// CHECK: define {{.*}}[[RESA]] [[NAMEA]](ptr {{.*}}, {{i32 .*%.*.coerce|\[1 x i32\] .*%.*.coerce|i64 .*%.*.coerce|%struct.LoadableIntWrapper\* .*byval\(%struct.LoadableIntWrapper\).*}}) diff --git a/test/Interop/Cxx/operators/member-out-of-line-irgen.swift b/test/Interop/Cxx/operators/member-out-of-line-irgen.swift index 0a64057dab38d..84ca875ea583c 100644 --- a/test/Interop/Cxx/operators/member-out-of-line-irgen.swift +++ b/test/Interop/Cxx/operators/member-out-of-line-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions | %FileCheck %s // // We should be able to support windows now. We will remove XFAIL in follow up // XFAIL: windows @@ -8,5 +7,5 @@ import MemberOutOfLine public func add(_ lhs: inout LoadableIntWrapper, _ rhs: LoadableIntWrapper) -> LoadableIntWrapper { lhs + rhs } -// CHECK: call {{i32|i64}} [[NAME:@_ZNK18LoadableIntWrapperplES_]](%struct.LoadableIntWrapper* %{{[0-9]+}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(.*\)}}{{.*}}) -// CHECK: declare {{.*}}{{i32|i64}} [[NAME]](%struct.LoadableIntWrapper* {{.*}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* .*byval\(%struct.LoadableIntWrapper\)}}{{.*}}) +// CHECK: call {{i32|i64}} [[NAME:@_ZNK18LoadableIntWrapperplES_]](ptr %{{[0-9]+}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* byval\(.*\)}}{{.*}}) +// CHECK: declare {{.*}}{{i32|i64}} [[NAME]](ptr {{.*}}, {{i32|\[1 x i32\]|i64|%struct.LoadableIntWrapper\* .*byval\(%struct.LoadableIntWrapper\)}}{{.*}}) diff --git a/test/Interop/Cxx/reference/reference-irgen.swift b/test/Interop/Cxx/reference/reference-irgen.swift index b0a1703c8457e..114979cef0a11 100644 --- a/test/Interop/Cxx/reference/reference-irgen.swift +++ b/test/Interop/Cxx/reference/reference-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s -Xcc -fignore-exceptions | %FileCheck %s import Reference @@ -7,29 +6,29 @@ public func getCxxRef() -> UnsafeMutablePointer { return getStaticIntRef() } -// CHECK: define {{(protected |dllexport )?}}swiftcc i8* @"$s4main9getCxxRefSpys5Int32VGyF"() -// CHECK: call i32* @{{_Z15getStaticIntRefv|"\?getStaticIntRef@@YAAEAHXZ"}}() +// CHECK: define {{(protected |dllexport )?}}swiftcc ptr @"$s4main9getCxxRefSpys5Int32VGyF"() +// CHECK: call ptr @{{_Z15getStaticIntRefv|"\?getStaticIntRef@@YAAEAHXZ"}}() public func getConstCxxRef() -> UnsafePointer { return getConstStaticIntRef() } -// CHECK: define {{(protected |dllexport )?}}swiftcc i8* @"$s4main14getConstCxxRefSPys5Int32VGyF"() -// CHECK: call i32* @{{_Z20getConstStaticIntRefv|"\?getConstStaticIntRef@@YAAEBHXZ"}}() +// CHECK: define {{(protected |dllexport )?}}swiftcc ptr @"$s4main14getConstCxxRefSPys5Int32VGyF"() +// CHECK: call ptr @{{_Z20getConstStaticIntRefv|"\?getConstStaticIntRef@@YAAEBHXZ"}}() public func getCxxRvalueRef() -> UnsafeMutablePointer { return getStaticIntRvalueRef() } -// CHECK: define {{(protected |dllexport )?}}swiftcc i8* @"$s4main15getCxxRvalueRefSpys5Int32VGyF"() -// CHECK: call i32* @{{_Z21getStaticIntRvalueRefv|"\?getStaticIntRvalueRef@@YA\$\$QEAHXZ"}}() +// CHECK: define {{(protected |dllexport )?}}swiftcc ptr @"$s4main15getCxxRvalueRefSpys5Int32VGyF"() +// CHECK: call ptr @{{_Z21getStaticIntRvalueRefv|"\?getStaticIntRvalueRef@@YA\$\$QEAHXZ"}}() public func getConstCxxRvalueRef() -> UnsafePointer { return getConstStaticIntRvalueRef() } -// CHECK: define {{(protected |dllexport )?}}swiftcc i8* @"$s4main20getConstCxxRvalueRefSPys5Int32VGyF"() -// CHECK: call i32* @{{_Z26getConstStaticIntRvalueRefv|"\?getConstStaticIntRvalueRef@@YA\$\$QEBHXZ"}}() +// CHECK: define {{(protected |dllexport )?}}swiftcc ptr @"$s4main20getConstCxxRvalueRefSPys5Int32VGyF"() +// CHECK: call ptr @{{_Z26getConstStaticIntRvalueRefv|"\?getConstStaticIntRvalueRef@@YA\$\$QEBHXZ"}}() public func setCxxRef() { var val: CInt = 21 @@ -37,7 +36,7 @@ public func setCxxRef() { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main9setCxxRefyyF"() -// CHECK: call void @{{_Z15setStaticIntRefRi|"\?setStaticIntRef@@YAXAEAH@Z"}}(i32* %{{.*}}) +// CHECK: call void @{{_Z15setStaticIntRefRi|"\?setStaticIntRef@@YAXAEAH@Z"}}(ptr %{{.*}}) public func setCxxConstRef() { let val: CInt = 21 @@ -45,4 +44,4 @@ public func setCxxConstRef() { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main14setCxxConstRefyyF"() -// CHECK: call void @{{_Z20setConstStaticIntRefRKi|"\?setConstStaticIntRef@@YAXAEBH@Z"}}(i32* %{{.*}}) +// CHECK: call void @{{_Z20setConstStaticIntRefRKi|"\?setConstStaticIntRef@@YAXAEBH@Z"}}(ptr %{{.*}}) diff --git a/test/Interop/Cxx/static/inline-static-member-var-irgen.swift b/test/Interop/Cxx/static/inline-static-member-var-irgen.swift index 0cfe053d1a81a..f5409c05e9864 100644 --- a/test/Interop/Cxx/static/inline-static-member-var-irgen.swift +++ b/test/Interop/Cxx/static/inline-static-member-var-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s | %FileCheck %s import InlineStaticMemberVar @@ -10,7 +9,7 @@ public func readStaticMember() -> CInt { // CHECK: @{{_ZN22WithInlineStaticMember12staticMemberE|"\?staticMember@WithInlineStaticMember@@2HA"}} = linkonce_odr {{(dso_local )?}}global i32 12, {{(comdat, )?}}align 4 // CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main16readStaticMembers5Int32VyF"() -// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN22WithInlineStaticMember12staticMemberE|"\?staticMember@WithInlineStaticMember@@2HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: [[VALUE:%.*]] = load i32, ptr @{{_ZN22WithInlineStaticMember12staticMemberE|"\?staticMember@WithInlineStaticMember@@2HA"}}, align 4 // CHECK: ret i32 [[VALUE]] public func writeStaticMember(_ c: CInt) { @@ -18,7 +17,7 @@ public func writeStaticMember(_ c: CInt) { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main17writeStaticMemberyys5Int32VF"(i32 %0) -// CHECK: store i32 %0, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN22WithInlineStaticMember12staticMemberE|"\?staticMember@WithInlineStaticMember@@2HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: store i32 %0, ptr @{{_ZN22WithInlineStaticMember12staticMemberE|"\?staticMember@WithInlineStaticMember@@2HA"}}, align 4 func modifyInout(_ c: inout CInt) { c = 42 @@ -29,4 +28,4 @@ public func passingVarAsInout() { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main17passingVarAsInoutyyF"() -// CHECK: call swiftcc void @"$s4main11modifyInoutyys5Int32VzF"(%Ts5Int32V* nocapture dereferenceable(4) bitcast (i32* @{{_ZN22WithInlineStaticMember12staticMemberE|"\?staticMember@WithInlineStaticMember@@2HA"}} to %Ts5Int32V*)) +// CHECK: call swiftcc void @"$s4main11modifyInoutyys5Int32VzF"(ptr nocapture dereferenceable(4) @{{_ZN22WithInlineStaticMember12staticMemberE|"\?staticMember@WithInlineStaticMember@@2HA"}}) diff --git a/test/Interop/Cxx/static/static-member-func-irgen.swift b/test/Interop/Cxx/static/static-member-func-irgen.swift index e651a812f99e1..ded6a25d389f3 100644 --- a/test/Interop/Cxx/static/static-member-func-irgen.swift +++ b/test/Interop/Cxx/static/static-member-func-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -Xcc -fignore-exceptions | %FileCheck %s import StaticMemberFunc @@ -18,7 +17,7 @@ public func callStaticMemberFuncAddr() -> CInt { } // CHECK: define {{.*}}i32 @"$s4main24callStaticMemberFuncAddrs5Int32VyF"() -// CHECK: call i32 ()* @{{_ZN20WithStaticMemberFunc26getStaticMemberFuncAddressEv|"\?getStaticMemberFuncAddress@WithStaticMemberFunc@@SAP6AHXZXZ"}}() +// CHECK: call ptr @{{_ZN20WithStaticMemberFunc26getStaticMemberFuncAddressEv|"\?getStaticMemberFuncAddress@WithStaticMemberFunc@@SAP6AHXZXZ"}}() -// CHECK: declare {{.*}}i32 ()* @{{_ZN20WithStaticMemberFunc26getStaticMemberFuncAddressEv|"\?getStaticMemberFuncAddress@WithStaticMemberFunc@@SAP6AHXZXZ"}}() +// CHECK: declare {{.*}}ptr @{{_ZN20WithStaticMemberFunc26getStaticMemberFuncAddressEv|"\?getStaticMemberFuncAddress@WithStaticMemberFunc@@SAP6AHXZXZ"}}() diff --git a/test/Interop/Cxx/static/static-member-var-irgen.swift b/test/Interop/Cxx/static/static-member-var-irgen.swift index 379b3dfbb1d83..25c77d3ef38f4 100644 --- a/test/Interop/Cxx/static/static-member-var-irgen.swift +++ b/test/Interop/Cxx/static/static-member-var-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s | %FileCheck %s // CHECK: @{{_ZN16WithStaticMember12staticMemberE|"\?staticMember@WithStaticMember@@2HA"}} = external {{(dso_local )?}}global i32, align 4 // CHECK: @{{_ZN26WithIncompleteStaticMember10selfMemberE|"\?selfMember@WithIncompleteStaticMember@@2V1@A"}} = {{external|linkonce_odr}} {{(dso_local )?}}global %class.WithIncompleteStaticMember, align 4 @@ -11,7 +10,7 @@ public func readStaticMember() -> CInt { } // CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main16readStaticMembers5Int32VyF"() -// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN16WithStaticMember12staticMemberE|"\?staticMember@WithStaticMember@@2HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: [[VALUE:%.*]] = load i32, ptr @{{_ZN16WithStaticMember12staticMemberE|"\?staticMember@WithStaticMember@@2HA"}}, align 4 // CHECK: ret i32 [[VALUE]] public func writeStaticMember() { @@ -19,14 +18,14 @@ public func writeStaticMember() { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main17writeStaticMemberyyF"() #0 -// CHECK: store i32 -1, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN16WithStaticMember12staticMemberE|"\?staticMember@WithStaticMember@@2HA"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: store i32 -1, ptr @{{_ZN16WithStaticMember12staticMemberE|"\?staticMember@WithStaticMember@@2HA"}}, align 4 public func readSelfMember() -> WithIncompleteStaticMember { return WithIncompleteStaticMember.selfMember } // CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main14readSelfMemberSo020WithIncompleteStaticD0VyF"() #0 -// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%TSo26WithIncompleteStaticMemberV, %TSo26WithIncompleteStaticMemberV* bitcast (%class.WithIncompleteStaticMember* @{{_ZN26WithIncompleteStaticMember1|"\?selfMember@WithIncompleteStaticMember@@2V1@A"}} +// CHECK: [[VALUE:%.*]] = load i32, ptr @{{_ZN26WithIncompleteStaticMember1|"\?selfMember@WithIncompleteStaticMember@@2V1@A"}} // CHECK: ret i32 [[VALUE]] public func writeSelfMember(_ m: WithIncompleteStaticMember) { @@ -34,7 +33,7 @@ public func writeSelfMember(_ m: WithIncompleteStaticMember) { } // CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main15writeSelfMemberyySo020WithIncompleteStaticD0VF"(i32 %0) #0 -// CHECK: store i32 %0, i32* getelementptr inbounds (%TSo26WithIncompleteStaticMemberV, %TSo26WithIncompleteStaticMemberV* bitcast (%class.WithIncompleteStaticMember* @{{_ZN26WithIncompleteStaticMember10selfMemberE|"\?selfMember@WithIncompleteStaticMember@@2V1@A"}} to %TSo26WithIncompleteStaticMemberV*), i32 0, i32 0, i32 0), align 4 +// CHECK: store i32 %0, ptr @{{_ZN26WithIncompleteStaticMember10selfMemberE|"\?selfMember@WithIncompleteStaticMember@@2V1@A"}}, align 4 // TODO: Currently, the generated code would try to load the value from // a symbol that is not defined. We should inline the value instead. @@ -46,12 +45,12 @@ public func readDefinedConstMember() -> CInt { } // CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main22readDefinedConstMembers5Int32VyF"() #0 -// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN21WithConstStaticMember7definedE|"\?defined@WithConstStaticMember@@2HB"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: [[VALUE:%.*]] = load i32, ptr @{{_ZN21WithConstStaticMember7definedE|"\?defined@WithConstStaticMember@@2HB"}}, align 4 // CHECK: ret i32 [[VALUE]] public func readDefinedOutOfLineConstMember() -> CInt { return WithConstStaticMember.definedOutOfLine } // CHECK: define {{(protected |dllexport )?}}swiftcc i32 @"$s4main31readDefinedOutOfLineConstMembers5Int32VyF"() #0 -// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZN21WithConstStaticMember16definedOutOfLineE|"\?definedOutOfLine@WithConstStaticMember@@2HB"}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: [[VALUE:%.*]] = load i32, ptr @{{_ZN21WithConstStaticMember16definedOutOfLineE|"\?definedOutOfLine@WithConstStaticMember@@2HB"}}, align 4 // CHECK: ret i32 [[VALUE]] diff --git a/test/Interop/Cxx/static/static-var-irgen.swift b/test/Interop/Cxx/static/static-var-irgen.swift index 3ba33700dfbf2..25bc2f33ff741 100644 --- a/test/Interop/Cxx/static/static-var-irgen.swift +++ b/test/Interop/Cxx/static/static-var-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop %s | %FileCheck %s -// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s +// RUN: %target-swift-emit-ir -I %S/Inputs -enable-experimental-cxx-interop %s | %FileCheck %s import StaticVar @@ -19,42 +18,42 @@ public func initStaticVars() -> CInt { // CHECK: define internal void @{{__cxx_global_var_init|"\?\?__EstaticVarInit@@YAXXZ"}}() // CHECK: %call = call {{.*}}i32 @{{_Z13makeStaticVarv|"\?makeStaticVar@@YAHXZ"}}() -// CHECK: store i32 %call, i32* @{{_ZL13staticVarInit|staticVarInit}}, align 4 +// CHECK: store i32 %call, ptr @{{_ZL13staticVarInit|staticVarInit}}, align 4 // CHECK: declare {{.*}}i32 @{{_Z13makeStaticVarv|"\?makeStaticVar@@YAHXZ"}}() // CHECK: define internal void @{{__cxx_global_var_init.1|"\?\?__EstaticVarInlineInit@@YAXXZ"}}() // CHECK: %call = call {{.*}}i32 @{{_Z19inlineMakeStaticVarv|"\?inlineMakeStaticVar@@YAHXZ"}}() -// CHECK: store i32 %call, i32* @{{_ZL19staticVarInlineInit|staticVarInlineInit}}, align 4 +// CHECK: store i32 %call, ptr @{{_ZL19staticVarInlineInit|staticVarInlineInit}}, align 4 // CHECK: define {{.*}}i32 @{{_Z19inlineMakeStaticVarv|"\?inlineMakeStaticVar@@YAHXZ"}}() // CHECK: ret i32 8 // CHECK: define internal void @{{__cxx_global_var_init.2|"\?\?__EstaticConstInit@@YAXXZ"}}() // CHECK: %call = call {{.*}}i32 @{{_Z15makeStaticConstv|"\?makeStaticConst@@YAHXZ"}}() -// CHECK: store i32 %call, i32* @{{_ZL15staticConstInit|staticConstInit}}, align 4 +// CHECK: store i32 %call, ptr @{{_ZL15staticConstInit|staticConstInit}}, align 4 // CHECK: declare {{.*}}i32 @{{_Z15makeStaticConstv|"\?makeStaticConst@@YAHXZ"}}() // CHECK: define internal void @{{__cxx_global_var_init.3|"\?\?__EstaticConstInlineInit@@YAXXZ"}}() // CHECK: %call = call {{.*}}i32 @{{_Z21inlineMakeStaticConstv|"\?inlineMakeStaticConst@@YAHXZ"}}() -// CHECK: store i32 %call, i32* @{{_ZL21staticConstInlineInit|staticConstInlineInit}}, align 4 +// CHECK: store i32 %call, ptr @{{_ZL21staticConstInlineInit|staticConstInlineInit}}, align 4 // CHECK: define {{.*}}i32 @{{_Z21inlineMakeStaticConstv|"\?inlineMakeStaticConst@@YAHXZ"}}() // CHECK: ret i32 16 // CHECK: define internal void @{{__cxx_global_var_init.4|"\?\?__EstaticNonTrivial@@YAXXZ"}}() -// CHECK: call{{.*}} {{void|%class.NonTrivial\*}} {{@_ZN10NonTrivialC[12]Ei\(%class.NonTrivial\* .*@_ZL16staticNonTrivial, i32 .*1024\)|@"\?\?0NonTrivial@@QEAA@H@Z"\(%class.NonTrivial\* .*@staticNonTrivial, i32 .*1024\)}} +// CHECK: call{{.*}} {{void|ptr}} {{@_ZN10NonTrivialC[12]Ei\(ptr .*@_ZL16staticNonTrivial, i32 .*1024\)|@"\?\?0NonTrivial@@QEAA@H@Z"\(ptr .*@staticNonTrivial, i32 .*1024\)}} // CHECK: define internal void @{{__cxx_global_var_init.5|"\?\?__EstaticConstNonTrivial@@YAXXZ"}}() -// CHECK: call{{.*}} {{void|%class.NonTrivial\*}} {{@_ZN10NonTrivialC[12]Ei\(%class.NonTrivial\* .*@_ZL21staticConstNonTrivial, i32 .*2048\)|@"\?\?0NonTrivial@@QEAA@H@Z"\(%class.NonTrivial\* .*@staticConstNonTrivial, i32 .*2048\)}} +// CHECK: call{{.*}} {{void|ptr}} {{@_ZN10NonTrivialC[12]Ei\(ptr .*@_ZL21staticConstNonTrivial, i32 .*2048\)|@"\?\?0NonTrivial@@QEAA@H@Z"\(ptr .*@staticConstNonTrivial, i32 .*2048\)}} public func readStaticVar() -> CInt { return staticVar } // CHECK: define {{.*}}i32 @"$s4main13readStaticVars5Int32VyF"() -// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZL9staticVar|staticVar}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: [[VALUE:%.*]] = load i32, ptr @{{_ZL9staticVar|staticVar}}, align 4 // CHECK: ret i32 [[VALUE]] public func writeStaticVar(_ v: CInt) { @@ -62,14 +61,14 @@ public func writeStaticVar(_ v: CInt) { } // CHECK: define {{.*}}void @"$s4main14writeStaticVaryys5Int32VF"(i32 {{.*}}%0) -// CHECK: store i32 %0, i32* getelementptr inbounds (%Ts5Int32V, %Ts5Int32V* bitcast (i32* @{{_ZL9staticVar|staticVar}} to %Ts5Int32V*), i32 0, i32 0), align 4 +// CHECK: store i32 %0, ptr @{{_ZL9staticVar|staticVar}}, align 4 public func readStaticNonTrivial() -> NonTrivial { return staticNonTrivial } // CHECK: define {{.*}}i32 @"$s4main20readStaticNonTrivialSo0dE0VyF"() -// CHECK: [[VALUE:%.*]] = load i32, i32* getelementptr inbounds (%TSo10NonTrivialV, %TSo10NonTrivialV* bitcast (%class.NonTrivial* @{{_ZL16staticNonTrivial|staticNonTrivial}} to %TSo10NonTrivialV*), i32 0, i32 0, i32 0), align 4 +// CHECK: [[VALUE:%.*]] = load i32, ptr @{{_ZL16staticNonTrivial|staticNonTrivial}}, align 4 // CHECK: ret i32 [[VALUE]] public func writeStaticNonTrivial(_ i: NonTrivial) { @@ -77,7 +76,7 @@ public func writeStaticNonTrivial(_ i: NonTrivial) { } // CHECK: define {{.*}}void @"$s4main21writeStaticNonTrivialyySo0dE0VF"(i32 {{.*}}%0) -// CHECK: store i32 %0, i32* getelementptr inbounds (%TSo10NonTrivialV, %TSo10NonTrivialV* bitcast (%class.NonTrivial* @{{_ZL16staticNonTrivial|staticNonTrivial}} to %TSo10NonTrivialV*), i32 0, i32 0, i32 0), align 4 +// CHECK: store i32 %0, ptr @{{_ZL16staticNonTrivial|staticNonTrivial}}, align 4 func modifyInout(_ c: inout CInt) { c = 42 @@ -87,7 +86,7 @@ public func passingVarAsInout() { modifyInout(&staticVar) } // CHECK: define {{.*}}void @"$s4main17passingVarAsInoutyyF"() -// CHECK: call swiftcc void @"$s4main11modifyInoutyys5Int32VzF"(%Ts5Int32V* nocapture dereferenceable(4) bitcast (i32* @{{_ZL9staticVar|staticVar}} to %Ts5Int32V*)) +// CHECK: call swiftcc void @"$s4main11modifyInoutyys5Int32VzF"(ptr nocapture dereferenceable(4) @{{_ZL9staticVar|staticVar}}) // CHECK: define internal void @_GLOBAL__sub_I__swift_imported_modules_() // CHECK: call void @{{__cxx_global_var_init|"\?\?__EstaticVarInit@@YAXXZ"}}() diff --git a/test/Interop/Cxx/templates/class-template-instantiation-demangling.swift b/test/Interop/Cxx/templates/class-template-instantiation-demangling.swift index ca7fcce801a15..5b87dd0b9869a 100644 --- a/test/Interop/Cxx/templates/class-template-instantiation-demangling.swift +++ b/test/Interop/Cxx/templates/class-template-instantiation-demangling.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop | grep 'define.*swiftcc.*$' | xargs %swift-demangle | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop | grep 'define.*swiftcc.*$' +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop | grep 'define.*swiftcc.*$' | xargs %swift-demangle | %FileCheck %s import Mangling @@ -9,5 +8,5 @@ public func returnInstantiation() -> WrappedMagicInt { return WrappedMagicInt() } -// CHECK: $s4main20receiveInstantiationyySo0025MagicWrapperInt32_lsFCfibVzF(%TSo0025MagicWrapperInt32_lsFCfibV* ---> @$s4main20receiveInstantiationyySo0025MagicWrapperInt32_lsFCfibVzF(%TSo0025MagicWrapperInt32_lsFCfibV* +// CHECK: $s4main20receiveInstantiationyySo0025MagicWrapperInt32_lsFCfibVzF(ptr ---> @$s4main20receiveInstantiationyySo0025MagicWrapperInt32_lsFCfibVzF(ptr // CHECK: $s4main19returnInstantiationSo0025MagicWrapperInt32_lsFCfibVyF() ---> @$s4main19returnInstantiationSo0025MagicWrapperInt32_lsFCfibVyF() diff --git a/test/Interop/Cxx/templates/class-template-uninstantiatable-members-irgen.swift b/test/Interop/Cxx/templates/class-template-uninstantiatable-members-irgen.swift index bd3cb05270fcb..11cd3e25c43b4 100644 --- a/test/Interop/Cxx/templates/class-template-uninstantiatable-members-irgen.swift +++ b/test/Interop/Cxx/templates/class-template-uninstantiatable-members-irgen.swift @@ -1,22 +1,21 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop -disable-availability-checking -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -disable-availability-checking -Xcc -fignore-exceptions +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop -disable-availability-checking -Xcc -fignore-exceptions | %FileCheck %s import ClassTemplateInstantiationErrors // CHECK-LABEL: define {{.*}}void @"$s4main23instantiateValidMembersyyF"() -// CHECK: call i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueEv|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(%struct.CannotBeInstantianted* -// CHECK: call i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueES0_|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHUIntWrapper@@@Z"}}(%struct.CannotBeInstantianted* +// CHECK: call i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueEv|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(ptr +// CHECK: call i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueES0_|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHUIntWrapper@@@Z"}}(ptr // CHECK: ret void -// CHECK-LABEL: define {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueEv|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(%struct.CannotBeInstantianted* -// CHECK: call {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE6getOneEv|"\?getOne@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(%struct.CannotBeInstantianted* +// CHECK-LABEL: define {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueEv|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(ptr +// CHECK: call {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE6getOneEv|"\?getOne@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(ptr // CHECK: ret i32 -// CHECK-LABEL: define {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueES0_|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHUIntWrapper@@@Z"}}(%struct.CannotBeInstantianted* {{.*}}, {{i32|i64|\[1 x i32\]|\%struct\.IntWrapper\* .*byval\(\%struct\.IntWrapper\)}} -// CHECK: call {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE6getOneEv|"\?getOne@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(%struct.CannotBeInstantianted* +// CHECK-LABEL: define {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE8incValueES0_|"\?incValue@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHUIntWrapper@@@Z"}}(ptr {{.*}}, {{i32|i64|\[1 x i32\]|ptr .*byval\(\%struct\.IntWrapper\)}} +// CHECK: call {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE6getOneEv|"\?getOne@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(ptr // CHECK: ret i32 -// CHECK-LABEL: define {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE6getOneEv|"\?getOne@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(%struct.CannotBeInstantianted* +// CHECK-LABEL: define {{.*}}i32 @{{_ZN21CannotBeInstantiantedI10IntWrapperE6getOneEv|"\?getOne@\?\$CannotBeInstantianted@UIntWrapper@@@@QEAAHXZ"}}(ptr // CHECK: ret i32 1 public func instantiateValidMembers() { var x = CannotBeInstantianted(IntWrapper(value: 41)) diff --git a/test/Interop/Cxx/templates/mangling-irgen.swift b/test/Interop/Cxx/templates/mangling-irgen.swift index cd24157b978ac..1caed4e475e9f 100644 --- a/test/Interop/Cxx/templates/mangling-irgen.swift +++ b/test/Interop/Cxx/templates/mangling-irgen.swift @@ -1,16 +1,15 @@ -// RUN: %target-swift-emit-ir %use_no_opaque_pointers %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s -// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop +// RUN: %target-swift-emit-ir %s -I %S/Inputs -enable-experimental-cxx-interop | %FileCheck %s import Mangling public func receiveInstantiation(_ i: inout WrappedMagicInt) {} // Don't forget to update manglings.txt when changing s4main20receiveInstantiationyySo34__CxxTemplateInst12MagicWrapperIiEVzF -// CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main20receiveInstantiationyySo0025MagicWrapperInt32_lsFCfibVzF"(%TSo0025MagicWrapperInt32_lsFCfibV* nocapture dereferenceable(1) %0) +// CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main20receiveInstantiationyySo0025MagicWrapperInt32_lsFCfibVzF"(ptr nocapture dereferenceable(1) %0) public func receiveInstantiation(_ i: inout WrappedMagicBool) {} -// CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main20receiveInstantiationyySo0024MagicWrapperBool_npAIefbVzF"(%TSo0024MagicWrapperBool_npAIefbV* nocapture dereferenceable(1) %0) +// CHECK: define {{(protected |dllexport )?}}swiftcc void @"$s4main20receiveInstantiationyySo0024MagicWrapperBool_npAIefbVzF"(ptr nocapture dereferenceable(1) %0) public func returnInstantiation() -> WrappedMagicInt { return WrappedMagicInt() diff --git a/test/Interop/Cxx/union/anonymous-union-partly-invalid.swift b/test/Interop/Cxx/union/anonymous-union-partly-invalid.swift index bef6aa53f95ca..e87718beee49e 100644 --- a/test/Interop/Cxx/union/anonymous-union-partly-invalid.swift +++ b/test/Interop/Cxx/union/anonymous-union-partly-invalid.swift @@ -1,5 +1,4 @@ -// RUN: %swift %use_no_opaque_pointers -I %S/Inputs -enable-experimental-cxx-interop -enable-objc-interop -emit-ir %s -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %swift -I %S/Inputs -enable-experimental-cxx-interop -enable-objc-interop -emit-ir %s -Xcc -fignore-exceptions +// RUN: %swift -I %S/Inputs -enable-experimental-cxx-interop -enable-objc-interop -emit-ir %s -Xcc -fignore-exceptions | %FileCheck %s import AnonymousUnionPartlyInvalid @@ -8,7 +7,6 @@ let a = sPtr![0].f() // CHECK: i32 @main // CHECK-NEXT: entry: -// CHECK-NEXT: bitcast -// CHECK-NEXT: call %struct.S -// CHECK-NEXT: ptrtoint %struct.S +// CHECK-NEXT: call ptr +// CHECK-NEXT: ptrtoint ptr diff --git a/test/Interop/Cxx/value-witness-table/copy-constructors-irgen.swift b/test/Interop/Cxx/value-witness-table/copy-constructors-irgen.swift index 71afe41737f1f..d5e358c03572e 100644 --- a/test/Interop/Cxx/value-witness-table/copy-constructors-irgen.swift +++ b/test/Interop/Cxx/value-witness-table/copy-constructors-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions +// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions | %FileCheck %s // REQUIRES: CPU=x86_64 // REQUIRES: objc_interop @@ -7,12 +6,8 @@ import CopyConstructors // CHECK-LABEL: define swiftcc void @"$s4main31testUserProvidedCopyConstructor3objSo03HascdeF0V_AEtAE_tF" -// CHECK: [[T0_DEST:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG0:%[0-9]+]] to %struct.HasUserProvidedCopyConstructor* -// CHECK: [[T0_SRC:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG2:%[0-9]+]] to %struct.HasUserProvidedCopyConstructor* -// CHECK: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(%struct.HasUserProvidedCopyConstructor* [[T0_DEST]], %struct.HasUserProvidedCopyConstructor* [[T0_SRC]]) -// CHECK: [[T1_DEST:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG1:%[0-9]+]] to %struct.HasUserProvidedCopyConstructor* -// CHECK: [[T1_SRC:%.*]] = bitcast %TSo30HasUserProvidedCopyConstructorV* [[ARG2]] to %struct.HasUserProvidedCopyConstructor* -// CHECK: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(%struct.HasUserProvidedCopyConstructor* [[T1_DEST]], %struct.HasUserProvidedCopyConstructor* [[T1_SRC]]) +// CHECK: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(ptr [[ARG0:%[0-9]+]], ptr [[ARG2:%[0-9]+]]) +// CHECK: call void @_ZN30HasUserProvidedCopyConstructorC1ERKS_(ptr [[ARG1:%[0-9]+]], ptr [[ARG2]]) // CHECK: ret void // CHECK-LABEL: define linkonce_odr void @_ZN30HasUserProvidedCopyConstructorC1ERKS_ diff --git a/test/Interop/Cxx/value-witness-table/custom-destructors-non-virtual-irgen.swift b/test/Interop/Cxx/value-witness-table/custom-destructors-non-virtual-irgen.swift index f195ebcce9d3f..3af5d7fcd9fa2 100644 --- a/test/Interop/Cxx/value-witness-table/custom-destructors-non-virtual-irgen.swift +++ b/test/Interop/Cxx/value-witness-table/custom-destructors-non-virtual-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir | %FileCheck %s -// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir +// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir | %FileCheck %s // This tests output needs to be updated for arm64. // XFAIL: CPU=arm64e @@ -14,12 +13,11 @@ extension HasUserProvidedDestructorAndDummy : InitWithDummy { } // Make sure the destructor is added as a witness. // CHECK: @"$sSo33HasUserProvidedDestructorAndDummyVWV" = linkonce_odr hidden constant %swift.vwtable -// CHECK-SAME: i8* bitcast (void (%swift.opaque*, %swift.type*)* @"$sSo33HasUserProvidedDestructorAndDummyVwxx" to i8*) +// CHECK-SAME: ptr @"$sSo33HasUserProvidedDestructorAndDummyVwxx" // CHECK-LABEL: define {{.*}}void @"$s4main37testHasUserProvidedDestructorAndDummyyyF" // CHECK: [[OBJ:%.*]] = alloca %TSo33HasUserProvidedDestructorAndDummyV -// CHECK: [[CXX_OBJ:%.*]] = bitcast %TSo33HasUserProvidedDestructorAndDummyV* [[OBJ]] to %struct.HasUserProvidedDestructorAndDummy* -// CHECK: call {{.*}}@{{_ZN33HasUserProvidedDestructorAndDummyD(1|2)Ev|"\?\?1HasUserProvidedDestructorAndDummy@@QEAA@XZ"}}(%struct.HasUserProvidedDestructorAndDummy* [[CXX_OBJ]]) +// CHECK: call {{.*}}@{{_ZN33HasUserProvidedDestructorAndDummyD(1|2)Ev|"\?\?1HasUserProvidedDestructorAndDummy@@QEAA@XZ"}}(ptr [[OBJ]]) // CHECK: ret void // Make sure we not only declare but define the destructor. @@ -30,10 +28,10 @@ public func testHasUserProvidedDestructorAndDummy() { } // CHECK-LABEL: define {{.*}}void @"$s4main26testHasDefaultedDestructoryyF" -// CHECK: call {{.*}}@{{_ZN22HasDefaultedDestructorC(1|2)Ev|"\?\?0HasDefaultedDestructor@@QEAA@XZ"}}(%struct.HasDefaultedDestructor* +// CHECK: call {{.*}}@{{_ZN22HasDefaultedDestructorC(1|2)Ev|"\?\?0HasDefaultedDestructor@@QEAA@XZ"}}(ptr // CHECK: ret void -// CHECK-LABEL: define {{.*}}@{{_ZN22HasDefaultedDestructorC(1|2)Ev|"\?\?0HasDefaultedDestructor@@QEAA@XZ"}}(%struct.HasDefaultedDestructor* +// CHECK-LABEL: define {{.*}}@{{_ZN22HasDefaultedDestructorC(1|2)Ev|"\?\?0HasDefaultedDestructor@@QEAA@XZ"}}(ptr // CHECK: ret public func testHasDefaultedDestructor() { _ = HasDefaultedDestructor() @@ -41,5 +39,5 @@ public func testHasDefaultedDestructor() { // Make sure the destroy value witness calls the destructor. // CHECK-LABEL: define {{.*}}void @"$sSo33HasUserProvidedDestructorAndDummyVwxx" -// CHECK: call {{.*}}@{{_ZN33HasUserProvidedDestructorAndDummyD(1|2)Ev|"\?\?1HasUserProvidedDestructorAndDummy@@QEAA@XZ"}}(%struct.HasUserProvidedDestructorAndDummy* +// CHECK: call {{.*}}@{{_ZN33HasUserProvidedDestructorAndDummyD(1|2)Ev|"\?\?1HasUserProvidedDestructorAndDummy@@QEAA@XZ"}}(ptr // CHECK: ret diff --git a/test/Interop/Cxx/value-witness-table/custom-destructors-virtual-irgen.swift b/test/Interop/Cxx/value-witness-table/custom-destructors-virtual-irgen.swift index b7848e274aa41..5056ade88b1b7 100644 --- a/test/Interop/Cxx/value-witness-table/custom-destructors-virtual-irgen.swift +++ b/test/Interop/Cxx/value-witness-table/custom-destructors-virtual-irgen.swift @@ -2,13 +2,12 @@ // will cause linker errors because of undefined vtables. // FIXME: Once we can link with libc++ we can start using RTTI. // -// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fno-rtti | %FileCheck %s -// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fno-rtti +// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fno-rtti | %FileCheck %s import CustomDestructor // CHECK-LABEL: define {{.*}}void @"$s4main022testHasVirtualBaseWithD10DestructoryySpys5Int32VGF" -// CHECK: call {{.*}}@{{_ZN28HasBaseWithVirtualDestructorD(1|2)Ev|"\?\?1HasBaseWithVirtualDestructor@@UEAA@XZ"}}(%struct.HasBaseWithVirtualDestructor* +// CHECK: call {{.*}}@{{_ZN28HasBaseWithVirtualDestructorD(1|2)Ev|"\?\?1HasBaseWithVirtualDestructor@@UEAA@XZ"}}(ptr // CHECK: ret public func testHasVirtualBaseWithVirtualDestructor( _ ptr: UnsafeMutablePointer diff --git a/test/Interop/Cxx/value-witness-table/witness-lifetime-operations-irgen.swift b/test/Interop/Cxx/value-witness-table/witness-lifetime-operations-irgen.swift index c003648d42095..0a1e910d917d4 100644 --- a/test/Interop/Cxx/value-witness-table/witness-lifetime-operations-irgen.swift +++ b/test/Interop/Cxx/value-witness-table/witness-lifetime-operations-irgen.swift @@ -1,5 +1,4 @@ -// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions | %FileCheck %s -// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions +// RUN: %target-swift-frontend -enable-experimental-cxx-interop -I %S/Inputs %s -emit-ir -Xcc -fignore-exceptions | %FileCheck %s // Temporarily restrict to x86 (rdar://89908618) // REQUIRES: CPU=x86_64 @@ -15,40 +14,40 @@ let h = Holder(holding: NonTrivial()) // $sSo10NonTrivialVwxx ---> destroy value witness for __C.NonTrivial // CHECK-LABEL: define linkonce_odr hidden void @"$sSo10NonTrivialVwxx" // CHECK-NOT: call -// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(%struct.NonTrivial* %{{[0-9]+}}) +// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(ptr %{{.*}}) // CHECK-NOT: call // CHECK: ret void // $sSo10NonTrivialVwcp ---> initializeWithCopy value witness for __C.NonTrivial -// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @"$sSo10NonTrivialVwcp" +// CHECK-LABEL: define linkonce_odr hidden ptr @"$sSo10NonTrivialVwcp" // CHECK-NOT: call -// CHECK: call {{void|\%struct\.NonTrivial\*}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(%struct.NonTrivial* %{{[0-9]+}}, %struct.NonTrivial* %{{[0-9]+}}) +// CHECK: call {{void|ptr}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(ptr %{{.*}}, ptr %{{.*}}) // CHECK-NOT: call -// CHECK: ret %swift.opaque* +// CHECK: ret ptr // $sSo10NonTrivialVwca ---> assignWithCopy value witness for __C.NonTrivia -// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @"$sSo10NonTrivialVwca" +// CHECK-LABEL: define linkonce_odr hidden ptr @"$sSo10NonTrivialVwca" // CHECK-NOT: call -// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(%struct.NonTrivial* %{{[0-9]+}}) -// CHECK: call {{void|\%struct\.NonTrivial\*}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(%struct.NonTrivial* %{{[0-9]+}}, %struct.NonTrivial* %{{[0-9]+}}) +// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(ptr %{{.*}}) +// CHECK: call {{void|ptr}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(ptr %{{.*}}, ptr %{{.*}}) // CHECK-NOT: call -// CHECK: ret %swift.opaque* +// CHECK: ret ptr // $sSo10NonTrivialVwtk ---> initializeWithTake value witness for __C.NonTrivial -// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @"$sSo10NonTrivialVwtk" +// CHECK-LABEL: define linkonce_odr hidden ptr @"$sSo10NonTrivialVwtk" // CHECK-NOT: call -// CHECK: call {{void|\%struct\.NonTrivial\*}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(%struct.NonTrivial* %{{[0-9]+}}, %struct.NonTrivial* %{{[0-9]+}}) +// CHECK: call {{void|ptr}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(ptr %{{.*}}, ptr %{{.*}}) // CHECK-NOT: call -// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(%struct.NonTrivial* %{{[0-9]+}}) +// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(ptr %{{.*}}) // CHECK-NOT: call -// CHECK: ret %swift.opaque* +// CHECK: ret ptr // $sSo10NonTrivialVwta ---> assignWithTake value witness for __C.NonTrivial -// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @"$sSo10NonTrivialVwta" +// CHECK-LABEL: define linkonce_odr hidden ptr @"$sSo10NonTrivialVwta" // CHECK-NOT: call -// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(%struct.NonTrivial* %{{[0-9]+}}) -// CHECK: call {{void|\%struct\.NonTrivial\*}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(%struct.NonTrivial* %{{[0-9]+}}, %struct.NonTrivial* %{{[0-9]+}}) +// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(ptr %{{.*}}) +// CHECK: call {{void|ptr}} @{{_ZN10NonTrivialC(1|2)ERKS_|"\?\?0NonTrivial@@QEAA@AEBU0@@Z"}}(ptr %{{.*}}, ptr %{{.*}}) // CHECK-NOT: call -// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(%struct.NonTrivial* %{{[0-9]+}}) +// CHECK: call void @{{_ZN10NonTrivialD(1|2)Ev|"\?\?1NonTrivial@@QEAA@XZ"}}(ptr %{{.*}}) // CHECK-NOT: call -// CHECK: ret %swift.opaque* +// CHECK: ret ptr