Files
swift-mirror/test/IRGen/objc_pointers.swift
Augusto Noronha 529845056b Fix functions not being kept for debugger
At Onone, many types of functions (anything user written, compiler
generated setters and getters, etc), should be kept in the final
binary so they're accessible by the debugger.

rdar://126763340
2024-05-14 10:31:44 -07:00

29 lines
1.2 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: %build-irgen-test-overlays
// RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck %s
// REQUIRES: CPU=x86_64
// REQUIRES: objc_interop
import Foundation
@objc class Foo : NSObject {
// CHECK: define internal void @"$s13objc_pointers3FooC16pointerArguments_1y1z1wySpySiG_SvSPySiGSAyACSgGtFTo"(ptr %0, ptr %1, ptr %2, ptr %3, ptr %4, ptr %5)
@objc func pointerArguments(_ x: UnsafeMutablePointer<Int>,
y: UnsafeMutableRawPointer,
z: UnsafePointer<Int>,
w: AutoreleasingUnsafeMutablePointer<Foo?>) {}
// CHECK: define internal void @"$s13objc_pointers3FooC24pointerMetatypeArguments1x1yySAyyXlXpG_SAyyXlXpSgGtFTo"(ptr %0, ptr %1, ptr %2, ptr %3)
@objc func pointerMetatypeArguments(x: AutoreleasingUnsafeMutablePointer<AnyClass>,
y: AutoreleasingUnsafeMutablePointer<AnyClass?>) {}
}
// CHECK-LABEL: s13objc_pointers14returnNSObject3objSo0D0CAE_tF
@_semantics("no.preserve.debugger")
func returnNSObject(obj: NSObject) -> NSObject {
// CHECK-NOT: return
// CHECK: @llvm.objc.retain
return obj
}