Skip to content

[embedded] Start using a new mangling prefix for Embedded Swift: $e #77923

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions lib/Basic/Mangler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,6 @@ void Mangler::beginManglingWithoutPrefix() {
void Mangler::beginMangling() {
beginManglingWithoutPrefix();

#if 0 // STAGING: To be switched over to soon.
switch (Flavor) {
case ManglingFlavor::Default:
Buffer << MANGLING_PREFIX_STR;
Expand All @@ -132,9 +131,6 @@ void Mangler::beginMangling() {
Buffer << MANGLING_PREFIX_EMBEDDED_STR;
break;
}
#else
Buffer << MANGLING_PREFIX_STR;
#endif
}

/// Finish the mangling of the symbol and return the mangled name.
Expand All @@ -144,7 +140,6 @@ std::string Mangler::finalize() {
Storage.clear();

#ifndef NDEBUG
#if 0 // STAGING: To be switched over to soon.
switch (Flavor) {
case ManglingFlavor::Default:
if (StringRef(result).starts_with(MANGLING_PREFIX_STR))
Expand All @@ -155,10 +150,6 @@ std::string Mangler::finalize() {
verify(result, Flavor);
break;
}
#else
if (StringRef(result).starts_with(MANGLING_PREFIX_STR))
verify(result, Flavor);
#endif
#endif

return result;
Expand Down Expand Up @@ -193,7 +184,6 @@ void Mangler::verify(StringRef nameStr, ManglingFlavor Flavor) {
// It should be kept in sync.
assert(StringRef(MANGLING_PREFIX_STR) != "_S" && "redundant check");

#if 0 // STAGING: To be switched over to soon.
switch (Flavor) {
case ManglingFlavor::Default:
buffer += MANGLING_PREFIX_STR;
Expand All @@ -202,9 +192,6 @@ void Mangler::verify(StringRef nameStr, ManglingFlavor Flavor) {
buffer += MANGLING_PREFIX_EMBEDDED_STR;
break;
}
#else
buffer += MANGLING_PREFIX_STR;
#endif

buffer += nameStr;
nameStr = buffer.str();
Expand Down
4 changes: 0 additions & 4 deletions lib/Demangling/Remangler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1795,7 +1795,6 @@ ManglingError Remangler::mangleGetter(Node *node, unsigned depth) {
}

ManglingError Remangler::mangleGlobal(Node *node, unsigned depth) {
#if 0 // STAGING: To be switched over to soon.
switch (Flavor) {
case ManglingFlavor::Default:
Buffer << MANGLING_PREFIX_STR;
Expand All @@ -1804,9 +1803,6 @@ ManglingError Remangler::mangleGlobal(Node *node, unsigned depth) {
Buffer << MANGLING_PREFIX_EMBEDDED_STR;
break;
}
#else
Buffer << MANGLING_PREFIX_STR;
#endif
bool mangleInReverseOrder = false;
for (auto Iter = node->begin(), End = node->end(); Iter != End; ++Iter) {
Node *Child = *Iter;
Expand Down
4 changes: 2 additions & 2 deletions test/embedded/accessor-unavailable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ struct Foo {
let foo = Foo()
let _ = foo[5]

// CHECK: $s4main3FooVyS2icig
// CHECK-NOT: $s4main3FooVyS2icis
// CHECK: $e4main3FooVyS2icig
// CHECK-NOT: $e4main3FooVyS2icis
4 changes: 2 additions & 2 deletions test/embedded/array-zero-size-struct.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ public func copy(_ a: inout [MyStruct]) {
var a = a
}

// CHECK: define {{.*}}@"$s4mainAAyyF"
// CHECK: define {{.*}}@"$s4main4copyyySayAA8MyStructVGzF"
// CHECK: define {{.*}}@"$e4mainAAyyF"
// CHECK: define {{.*}}@"$e4main4copyyySayAA8MyStructVGzF"
2 changes: 1 addition & 1 deletion test/embedded/availability-code-removal.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ public func test() -> any Player {
}

// CHECK-A: $s4main4testAA6Player_pyF
// CHECK-B-NOT: $s4main4testAA6Player_pyF
// CHECK-B-NOT: $e4main4testAA6Player_pyF
10 changes: 5 additions & 5 deletions test/embedded/basic-irgen-no-stdlib.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ public func main() {
start(p: Concrete())
}

// CHECK-LABEL: define {{.*}}void @"$s4main8ConcreteVACycfC"()
// CHECK-LABEL: define {{.*}}void @"$e4main8ConcreteVACycfC"()

// CHECK-LABEL: define {{.*}}void @"$s4main5start1pyx_tAA6PlayerRzlFAA8ConcreteV_Tg5"()
// CHECK-LABEL: define {{.*}}void @"$e4main5start1pyx_tAA6PlayerRzlFAA8ConcreteV_Tg5"()

// CHECK-LABEL: define {{.*}}void @"$s4mainAAyyF"()
// CHECK-LABEL: define {{.*}}void @"$e4mainAAyyF"()
// CHECK-NEXT: entry:
// CHECK-NEXT: call swiftcc void @"$s4main8ConcreteVACycfC"()
// CHECK-NEXT: call swiftcc void @"$s4main5start1pyx_tAA6PlayerRzlFAA8ConcreteV_Tg5"()
// CHECK-NEXT: call swiftcc void @"$e4main8ConcreteVACycfC"()
// CHECK-NEXT: call swiftcc void @"$e4main5start1pyx_tAA6PlayerRzlFAA8ConcreteV_Tg5"()
// CHECK-NEXT: ret void
// CHECK-NEXT: }
16 changes: 8 additions & 8 deletions test/embedded/basic-modules-generics-no-stdlib.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@ public func main() {
}

// CHECK: define {{.*}}i32 @main(i32 %0, ptr %1)
// CHECK: define {{.*}}void @"$s4Main4BoolVACycfC"()
// CHECK: define {{.*}}void @"$s4Main4mainyyF"()
// CHECK: define {{.*}}void @"$s8MyModule14nonGenericFuncyyF"()
// CHECK: define {{.*}}void @"$s8MyModule11genericFuncyxxlF4Main4BoolV_Tg5"()
// CHECK: define {{.*}}void @"$s8MyModule14NonGenericTypeVACycfC"()
// CHECK: define {{.*}}void @"$s8MyModule11GenericTypeVyACyxGxcfC4Main4BoolV_Tt1g5"()
// CHECK: define {{.*}}void @"$s8MyModule17protocolBoundFuncyyxAA8ProtocolRzlF4Main4BoolV_Tg5"()
// CHECK: define {{.*}}void @"$s8MyModule17protocolBoundFuncyyxAA8ProtocolRzlFAA11GenericTypeVy4Main4BoolVG_Tg5"()
// CHECK: define {{.*}}void @"$e4Main4BoolVACycfC"()
// CHECK: define {{.*}}void @"$e4Main4mainyyF"()
// CHECK: define {{.*}}void @"$e8MyModule14nonGenericFuncyyF"()
// CHECK: define {{.*}}void @"$e8MyModule11genericFuncyxxlF4Main4BoolV_Tg5"()
// CHECK: define {{.*}}void @"$e8MyModule14NonGenericTypeVACycfC"()
// CHECK: define {{.*}}void @"$e8MyModule11GenericTypeVyACyxGxcfC4Main4BoolV_Tt1g5"()
// CHECK: define {{.*}}void @"$e8MyModule17protocolBoundFuncyyxAA8ProtocolRzlF4Main4BoolV_Tg5"()
// CHECK: define {{.*}}void @"$e8MyModule17protocolBoundFuncyyxAA8ProtocolRzlFAA11GenericTypeVy4Main4BoolVG_Tg5"()
10 changes: 5 additions & 5 deletions test/embedded/basic-modules-no-stdlib.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ public func main() {
}

// CHECK: define {{.*}}@main{{.*}} {
// CHECK: define {{.*}}void @"$s4Main4mainyyF"{{.*}} {
// CHECK: define {{.*}}void @"$s8MyModule10moduleMainyyF"{{.*}} {
// CHECK: define {{.*}}void @"$s8MyModule8ConcreteVACycfC"{{.*}} {
// CHECK: define {{.*}}void @"$s8MyModule5start1pyx_tAA6PlayerRzlFAA8ConcreteV_Tg5"{{.*}} {
// CHECK: define {{.*}}void @"$s8MyModule8ConcreteV4playyyF"{{.*}} {
// CHECK: define {{.*}}void @"$e4Main4mainyyF"{{.*}} {
// CHECK: define {{.*}}void @"$e8MyModule10moduleMainyyF"{{.*}} {
// CHECK: define {{.*}}void @"$e8MyModule8ConcreteVACycfC"{{.*}} {
// CHECK: define {{.*}}void @"$e8MyModule5start1pyx_tAA6PlayerRzlFAA8ConcreteV_Tg5"{{.*}} {
// CHECK: define {{.*}}void @"$e8MyModule8ConcreteV4playyyF"{{.*}} {
4 changes: 2 additions & 2 deletions test/embedded/builtins-misc.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public func foo() -> Builtin.Int1 {
return Builtin.ispod(MyStruct.self)
}

// CHECK: define {{.*}}i1 @"$ss3fooBi1_yF"()
// CHECK: define {{.*}}i1 @"$es3fooBi1_yF"()
// CHECK-NEXT: entry:
// CHECK-NEXT: ret i1 false
// CHECK-NEXT: }
Expand All @@ -29,7 +29,7 @@ public struct MyGenericStruct<T> {
}
}

// CHECK: define {{.*}}i1 @"$ss15MyGenericStructV3fooBi1_yFs0aC0V_Tg5"()
// CHECK: define {{.*}}i1 @"$es15MyGenericStructV3fooBi1_yFs0aC0V_Tg5"()
// CHECK-NEXT: entry:
// CHECK-NEXT: ret i1 false
// CHECK-NEXT: }
72 changes: 36 additions & 36 deletions test/embedded/classes-generic-no-stdlib.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,49 +22,49 @@ public func bar(t: T2) -> MyClass<T2> {
return MyClass<T2>(t: t)
}

// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1txvgAA2T1V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1txvsAA2T1V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1txvMAA2T1V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1tACyxGx_tcfCAA2T1V_Tt0g5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassCfDAA2T1V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1txvgAA2T1V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1txvsAA2T1V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1txvMAA2T1V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1tACyxGx_tcfCAA2T1V_Tt0g5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassCfDAA2T1V_Tg5 {{.*}}{

// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1txvgAA2T2V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1txvsAA2T2V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1txvMAA2T2V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassC1tACyxGx_tcfCAA2T2V_Tt0g5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$s4main7MyClassCfDAA2T2V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1txvgAA2T2V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1txvsAA2T2V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1txvMAA2T2V_Tg5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassC1tACyxGx_tcfCAA2T2V_Tt0g5 {{.*}}{
// CHECK-SIL-DAG: sil {{.*}}@$e4main7MyClassCfDAA2T2V_Tg5 {{.*}}{

// CHECK-SIL: sil_vtable MyClass {
// CHECK-SIL: #MyClass.t!getter: <T> (MyClass<T>) -> () -> T : @$s4main7MyClassC1txvgAA2T1V_Tg5 // specialized MyClass.t.getter
// CHECK-SIL: #MyClass.t!setter: <T> (MyClass<T>) -> (T) -> () : @$s4main7MyClassC1txvsAA2T1V_Tg5 // specialized MyClass.t.setter
// CHECK-SIL: #MyClass.t!modify: <T> (MyClass<T>) -> () -> () : @$s4main7MyClassC1txvMAA2T1V_Tg5 // specialized MyClass.t.modify
// CHECK-SIL: #MyClass.init!allocator: <T> (MyClass<T>.Type) -> (T) -> MyClass<T> : @$s4main7MyClassC1tACyxGx_tcfCAA2T1V_Tg5 // specialized MyClass.__allocating_init(t:)
// CHECK-SIL: #MyClass.deinit!deallocator: @$s4main7MyClassCfDAA2T1V_Tg5 // specialized MyClass.__deallocating_deinit
// CHECK-SIL: #MyClass.t!getter: <T> (MyClass<T>) -> () -> T : @$e4main7MyClassC1txvgAA2T1V_Tg5 // specialized MyClass.t.getter
// CHECK-SIL: #MyClass.t!setter: <T> (MyClass<T>) -> (T) -> () : @$e4main7MyClassC1txvsAA2T1V_Tg5 // specialized MyClass.t.setter
// CHECK-SIL: #MyClass.t!modify: <T> (MyClass<T>) -> () -> () : @$e4main7MyClassC1txvMAA2T1V_Tg5 // specialized MyClass.t.modify
// CHECK-SIL: #MyClass.init!allocator: <T> (MyClass<T>.Type) -> (T) -> MyClass<T> : @$e4main7MyClassC1tACyxGx_tcfCAA2T1V_Tg5 // specialized MyClass.__allocating_init(t:)
// CHECK-SIL: #MyClass.deinit!deallocator: @$e4main7MyClassCfDAA2T1V_Tg5 // specialized MyClass.__deallocating_deinit
// CHECK-SIL: }

// CHECK-SIL: sil_vtable $MyClass<T2> {
// CHECK-SIL: #MyClass.t!getter: <T> (MyClass<T>) -> () -> T : @$s4main7MyClassC1txvgAA2T2V_Tg5 // specialized MyClass.t.getter
// CHECK-SIL: #MyClass.t!setter: <T> (MyClass<T>) -> (T) -> () : @$s4main7MyClassC1txvsAA2T2V_Tg5 // specialized MyClass.t.setter
// CHECK-SIL: #MyClass.t!modify: <T> (MyClass<T>) -> () -> () : @$s4main7MyClassC1txvMAA2T2V_Tg5 // specialized MyClass.t.modify
// CHECK-SIL: #MyClass.init!allocator: <T> (MyClass<T>.Type) -> (T) -> MyClass<T> : @$s4main7MyClassC1tACyxGx_tcfCAA2T2V_Tg5 // specialized MyClass.__allocating_init(t:)
// CHECK-SIL: #MyClass.deinit!deallocator: @$s4main7MyClassCfDAA2T2V_Tg5 // specialized MyClass.__deallocating_deinit
// CHECK-SIL: #MyClass.t!getter: <T> (MyClass<T>) -> () -> T : @$e4main7MyClassC1txvgAA2T2V_Tg5 // specialized MyClass.t.getter
// CHECK-SIL: #MyClass.t!setter: <T> (MyClass<T>) -> (T) -> () : @$e4main7MyClassC1txvsAA2T2V_Tg5 // specialized MyClass.t.setter
// CHECK-SIL: #MyClass.t!modify: <T> (MyClass<T>) -> () -> () : @$e4main7MyClassC1txvMAA2T2V_Tg5 // specialized MyClass.t.modify
// CHECK-SIL: #MyClass.init!allocator: <T> (MyClass<T>.Type) -> (T) -> MyClass<T> : @$e4main7MyClassC1tACyxGx_tcfCAA2T2V_Tg5 // specialized MyClass.__allocating_init(t:)
// CHECK-SIL: #MyClass.deinit!deallocator: @$e4main7MyClassCfDAA2T2V_Tg5 // specialized MyClass.__deallocating_deinit
// CHECK-SIL: }


// CHECK-IR: @"$s4main7MyClassCyAA2T2VGN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$s4main7MyClassCfDAA2T2V_Tg5", ptr null, ptr @"$s4main7MyClassC1txvgAA2T2V_Tg5", ptr @"$s4main7MyClassC1txvsAA2T2V_Tg5", ptr @"$s4main7MyClassC1txvMAA2T2V_Tg5", ptr @"$s4main7MyClassC1tACyxGx_tcfCAA2T2V_Tg5" }>
// CHECK-IR: @"$s4main7MyClassCyAA2T1VGN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$s4main7MyClassCfDAA2T1V_Tg5", ptr null, ptr @"$s4main7MyClassC1txvgAA2T1V_Tg5", ptr @"$s4main7MyClassC1txvsAA2T1V_Tg5", ptr @"$s4main7MyClassC1txvMAA2T1V_Tg5", ptr @"$s4main7MyClassC1tACyxGx_tcfCAA2T1V_Tg5" }>
// CHECK-IR: @"$e4main7MyClassCyAA2T2VGN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$e4main7MyClassCfDAA2T2V_Tg5", ptr null, ptr @"$e4main7MyClassC1txvgAA2T2V_Tg5", ptr @"$e4main7MyClassC1txvsAA2T2V_Tg5", ptr @"$e4main7MyClassC1txvMAA2T2V_Tg5", ptr @"$e4main7MyClassC1tACyxGx_tcfCAA2T2V_Tg5" }>
// CHECK-IR: @"$e4main7MyClassCyAA2T1VGN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$e4main7MyClassCfDAA2T1V_Tg5", ptr null, ptr @"$e4main7MyClassC1txvgAA2T1V_Tg5", ptr @"$e4main7MyClassC1txvsAA2T1V_Tg5", ptr @"$e4main7MyClassC1txvMAA2T1V_Tg5", ptr @"$e4main7MyClassC1tACyxGx_tcfCAA2T1V_Tg5" }>

// CHECK-IR-DAG: define {{.*}}void @"$s4main7MyClassC1txvgAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}i1 @"$s4main7MyClassC1txvgAA2T2V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassC1tACyxGx_tcfCAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassC1tACyxGx_tcfCAA2T2V_Tg5"(i1 %0, ptr swiftself %1)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassC1tACyxGx_tcfCAA2T1V_Tt0g5"()
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassC1tACyxGx_tcfCAA2T2V_Tt0g5"(i1 %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassC1tACyxGx_tcfcAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassC1tACyxGx_tcfcAA2T2V_Tg5"(i1 %0, ptr swiftself %1)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassCfdAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main7MyClassCfdAA2T2V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}void @"$s4main7MyClassCfDAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}void @"$s4main7MyClassCfDAA2T2V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main3foo1tAA7MyClassCyAA2T1VGAG_tF"()
// CHECK-IR-DAG: define {{.*}}ptr @"$s4main3bar1tAA7MyClassCyAA2T2VGAG_tF"(i1 %0)
// CHECK-IR-DAG: define {{.*}}void @"$e4main7MyClassC1txvgAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}i1 @"$e4main7MyClassC1txvgAA2T2V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassC1tACyxGx_tcfCAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassC1tACyxGx_tcfCAA2T2V_Tg5"(i1 %0, ptr swiftself %1)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassC1tACyxGx_tcfCAA2T1V_Tt0g5"()
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassC1tACyxGx_tcfCAA2T2V_Tt0g5"(i1 %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassC1tACyxGx_tcfcAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassC1tACyxGx_tcfcAA2T2V_Tg5"(i1 %0, ptr swiftself %1)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassCfdAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main7MyClassCfdAA2T2V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}void @"$e4main7MyClassCfDAA2T1V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}void @"$e4main7MyClassCfDAA2T2V_Tg5"(ptr swiftself %0)
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main3foo1tAA7MyClassCyAA2T1VGAG_tF"()
// CHECK-IR-DAG: define {{.*}}ptr @"$e4main3bar1tAA7MyClassCyAA2T2VGAG_tF"(i1 %0)
4 changes: 2 additions & 2 deletions test/embedded/classes-indirect-return.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
// REQUIRES: OS=macosx || OS=linux-gnu
// REQUIRES: swift_feature_Embedded

// CHECK: sil @$s4main1XC3fooxyFSi_Tg5 : $@convention(method) (@guaranteed X<Int>) -> Int {
// CHECK: sil @$e4main1XC3fooxyFSi_Tg5 : $@convention(method) (@guaranteed X<Int>) -> Int {

// CHECK-LABEL: sil_vtable $X<Int>
// CHECK: #X.foo: <T> (X<T>) -> () -> T : @$s4main1XC3fooxyFSi_Tg5
// CHECK: #X.foo: <T> (X<T>) -> () -> T : @$e4main1XC3fooxyFSi_Tg5
// CHECK: }

open class X<T> {
Expand Down
14 changes: 7 additions & 7 deletions test/embedded/classes-methods-no-stdlib.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ public class MySubClass: MyClass {
override func foo() { }
}

// CHECK: @"$s4main7MyClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$s4main7MyClassCfD", ptr null, ptr @"$s4main7MyClassC3fooyyF", ptr @"$s4main7MyClassC3baryyF", ptr @swift_deletedMethodError }>
// CHECK: @"$s4main10MySubClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr @"$s4main7MyClassCN", ptr @"$s4main10MySubClassCfD", ptr null, ptr @"$s4main10MySubClassC3fooyyF", ptr @"$s4main7MyClassC3baryyF", ptr @"$s4main10MySubClassCACycfC" }>
// CHECK: @"$e4main7MyClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$e4main7MyClassCfD", ptr null, ptr @"$e4main7MyClassC3fooyyF", ptr @"$e4main7MyClassC3baryyF", ptr @swift_deletedMethodError }>
// CHECK: @"$e4main10MySubClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr @"$e4main7MyClassCN", ptr @"$e4main10MySubClassCfD", ptr null, ptr @"$e4main10MySubClassC3fooyyF", ptr @"$e4main7MyClassC3baryyF", ptr @"$e4main10MySubClassCACycfC" }>

// CHECK: define {{.*}}void @"$s4main4test1xyAA7MyClassC_tF"(ptr %0)
// CHECK: define {{.*}}void @"$e4main4test1xyAA7MyClassC_tF"(ptr %0)
public func test(x: MyClass) {

x.foo() // goes through the vtable
Expand All @@ -25,15 +25,15 @@ public func test(x: MyClass) {
// CHECK: call swiftcc void %3(ptr swiftself %0)

x.bar() // does not go through the vtable
// CHECK: call swiftcc void @"$s4main7MyClassC3baryyF"
// CHECK: call swiftcc void @"$e4main7MyClassC3baryyF"

let y = MySubClass()
// CHECK: call swiftcc ptr @"$s4main10MySubClassCACycfC"
// CHECK: call swiftcc ptr @"$e4main10MySubClassCACycfC"

y.foo() // does not go through the vtable
// CHECK: call swiftcc void @"$s4main10MySubClassC3fooyyF"
// CHECK: call swiftcc void @"$e4main10MySubClassC3fooyyF"

y.bar() // does not go through the vtable
// CHECK: call swiftcc void @"$s4main7MyClassC3baryyF"
// CHECK: call swiftcc void @"$e4main7MyClassC3baryyF"

}
24 changes: 12 additions & 12 deletions test/embedded/classes-no-stdlib.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,26 @@

public class MyClass {}

// CHECK-DAG: @"$s4main7MyClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$s4main7MyClassCfD", ptr null, ptr @"$s4main7MyClassCACycfC" }>
// CHECK-DAG: define {{.*}}ptr @"$s4main7MyClassCfd"
// CHECK-DAG: define {{.*}}void @"$s4main7MyClassCfD"
// CHECK-DAG: define {{.*}}ptr @"$s4main7MyClassCACycfC"
// CHECK-DAG: define {{.*}}ptr @"$s4main7MyClassCACycfc"
// CHECK-DAG: @"$e4main7MyClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr }> <{ ptr null, ptr @"$e4main7MyClassCfD", ptr null, ptr @"$e4main7MyClassCACycfC" }>
// CHECK-DAG: define {{.*}}ptr @"$e4main7MyClassCfd"
// CHECK-DAG: define {{.*}}void @"$e4main7MyClassCfD"
// CHECK-DAG: define {{.*}}ptr @"$e4main7MyClassCACycfC"
// CHECK-DAG: define {{.*}}ptr @"$e4main7MyClassCACycfc"

public func foo() -> MyClass {
return MyClass()
}
// CHECK-DAG: define {{.*}}ptr @"$s4main3fooAA7MyClassCyF"
// CHECK-DAG: define {{.*}}ptr @"$e4main3fooAA7MyClassCyF"

public class MySubClass: MyClass {}

// CHECK-DAG: @"$s4main10MySubClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr }> <{ ptr @"$s4main7MyClassCN", ptr @"$s4main10MySubClassCfD", ptr null, ptr @"$s4main10MySubClassCACycfC" }>
// CHECK-DAG: define {{.*}}ptr @"$s4main10MySubClassCACycfC"
// CHECK-DAG: define {{.*}}ptr @"$s4main10MySubClassCACycfc"
// CHECK-DAG: define {{.*}}ptr @"$s4main10MySubClassCfd"
// CHECK-DAG: define {{.*}}void @"$s4main10MySubClassCfD"
// CHECK-DAG: @"$e4main10MySubClassCN" = {{.*}}<{ ptr, ptr, ptr, ptr }> <{ ptr @"$e4main7MyClassCN", ptr @"$e4main10MySubClassCfD", ptr null, ptr @"$e4main10MySubClassCACycfC" }>
// CHECK-DAG: define {{.*}}ptr @"$e4main10MySubClassCACycfC"
// CHECK-DAG: define {{.*}}ptr @"$e4main10MySubClassCACycfc"
// CHECK-DAG: define {{.*}}ptr @"$e4main10MySubClassCfd"
// CHECK-DAG: define {{.*}}void @"$e4main10MySubClassCfD"

public func bar() -> MyClass {
return MySubClass()
}
// CHECK-DAG: define {{.*}}ptr @"$s4main3barAA7MyClassCyF"
// CHECK-DAG: define {{.*}}ptr @"$e4main3barAA7MyClassCyF"
Loading