mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This commit adds a DebugVariable field that is shared by - AllocBoxInst - AllocStackInst - DebugValueInst - DebugValueAddrInst Currently DebugVariable only holds the Swift argument number. This allows us to retire several expensive heuristics in IRGen that attempted to identify which local variables actually where arguments and recover their relative order. Memory footprint notes: This commit adds a 4-byte field to 4 SILInstructin subclasses. This was offset by8ab1e2dd50which removed 20 bytes from *every* SILInstruction. Caveats: This commit surfaces a known bug in FunctionSigantureOpts, tracked in rdar://problem/23727705 — debug info for exploded function arguments cannot be expressed until this is fixed. This reappliesed2b16dc5awith a bugfix for generic function arrguments and an additional testcase. <rdar://problem/21185379&22705926>
20 lines
666 B
Swift
20 lines
666 B
Swift
// RUN: %target-swift-frontend -primary-file %s -emit-ir -g -o - | FileCheck %s
|
|
|
|
class Foo
|
|
{
|
|
func DefinesClosure (a_string : String) -> () -> String
|
|
{
|
|
// Verify that we only emit the implicit argument,
|
|
// and not the unowned local copy of self.
|
|
//
|
|
// CHECK: ![[SCOPE:.*]] = distinct !DISubprogram(name: "DefinesClosure",
|
|
// CHECK-NOT: !DILocalVariable(name: "self", scope: ![[SCOPE]]
|
|
// CHECK: !DILocalVariable(name: "self", arg: 2, scope: ![[SCOPE]]
|
|
// CHECK-NOT: !DILocalVariable(name: "self", scope: ![[SCOPE]]
|
|
return { [unowned self] in
|
|
var tmp_string = a_string
|
|
return tmp_string
|
|
}
|
|
}
|
|
}
|