Skip to content

Commit 20a815c

Browse files
authored
Merge pull request #9890 from adrian-prantl/cleanup
2 parents e9842a5 + 84d9238 commit 20a815c

17 files changed

+66
-58
lines changed

lib/IRGen/IRGenDebugInfo.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1998,8 +1998,13 @@ void IRGenDebugInfoImpl::emitDbgIntrinsic(
19981998
// the variable that is live throughout the function. With SIL
19991999
// optimizations this is not guaranteed and a variable can end up in
20002000
// two allocas (for example, one function inlined twice).
2001-
if (isa<llvm::AllocaInst>(Storage)) {
2002-
DBuilder.insertDeclare(Storage, Var, Expr, DL, BB);
2001+
if (auto *Alloca = dyn_cast<llvm::AllocaInst>(Storage)) {
2002+
auto *ParentBB = Alloca->getParent();
2003+
auto InsertBefore = std::next(Alloca->getIterator());
2004+
if (InsertBefore != ParentBB->end())
2005+
DBuilder.insertDeclare(Alloca, Var, Expr, DL, &*InsertBefore);
2006+
else
2007+
DBuilder.insertDeclare(Alloca, Var, Expr, DL, ParentBB);
20032008
return;
20042009
}
20052010

test/DebugInfo/any.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ func markUsed<T>(_ t: T) {}
44

55
func main() {
66
// CHECK: call void @llvm.dbg.declare(metadata %Any* {{.*}}, metadata ![[S:.*]], metadata !{{[0-9]+}}), !dbg ![[DBG:.*]]
7+
// CHECK: ![[S]] = !DILocalVariable(name: "s", {{.*}}line: [[@LINE+3]]
78
// CHECK: ![[SCOPE:.*]] = distinct !DILexicalBlock({{.*}}line: 5, column: 13)
8-
// CHECK: ![[S]] = !DILocalVariable(name: "s", {{.*}}line: [[@LINE+2]]
9-
// CHECK: ![[DBG]] = !DILocation(line: [[@LINE+1]], column: 7, scope: ![[SCOPE]])
9+
// CHECK: ![[DBG]] = !DILocation(line: [[@LINE+1]], column: 7, scope: ![[SCOPE:.*]])
1010
var s: Any = "hello world"
1111
var n: Any = 12
1212
var t: Any = (1,2)

test/DebugInfo/closure-args.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ func main() -> Void
1212
var backward_ptr =
1313
// CHECK: define internal {{.*}} i1 @_T04mainAAyyFSbSS_SStcfU_(
1414
// CHECK: %[[RANDOM_STR_ADDR:.*]] = alloca %TSS*, align {{(4|8)}}
15-
// CHECK: store %TSS* %{{.*}}, %TSS** %[[RANDOM_STR_ADDR]], align {{(4|8)}}
1615
// CHECK-NEXT: call void @llvm.dbg.declare(metadata %TSS** %[[RANDOM_STR_ADDR]], metadata !{{.*}}, metadata !{{[0-9]+}}), !dbg
16+
// CHECK: store %TSS* %{{.*}}, %TSS** %[[RANDOM_STR_ADDR]], align {{(4|8)}}
1717
// CHECK-DAG: !DILocalVariable(name: "lhs",{{.*}} line: [[@LINE+5]],
1818
// CHECK-DAG: !DILocalVariable(name: "rhs",{{.*}} line: [[@LINE+4]],
1919
// CHECK-DAG: !DILocalVariable(name: "random_string",{{.*}} line: 8,

test/DebugInfo/dbgvalue-insertpt.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
// RUN: %target-swift-frontend -g -emit-ir %s | %FileCheck %s
2+
// FIXME: This test should be testing a non-shadow-copied value instead.
23
for i in 0 ..< 3 {
34
// CHECK: %[[ALLOCA:[0-9]+]] = alloca %TSiSg
45
// CHECK: %i.addr = alloca i{{32|64}}
6+
// CHECK-NEXT: call void @llvm.dbg.declare(metadata i{{32|64}}* %i.addr,
7+
// CHECK-SAME: metadata ![[I:[0-9]+]],
58
// CHECK: %[[CAST:[0-9]+]] = bitcast %TSiSg* %[[ALLOCA]] to i{{32|64}}*
69
// CHECK: %[[LD:[0-9]+]] = load i{{32|64}}, i{{32|64}}* %[[CAST]]
710
// CHECK: br i1 {{%.*}}, label %[[FAIL:.*]], label %[[SUCCESS:.*]],
@@ -12,7 +15,5 @@ for i in 0 ..< 3 {
1215
// CHECK: ; <label>:[[NEXT_BB]]:
1316
// CHECK: %[[PHI_VAL:.*]] = phi i{{32|64}} [ %[[LD]], %[[SUCCESS]] ]
1417
// CHECK: store i{{32|64}} %[[PHI_VAL]], i{{32|64}}* %i.addr
15-
// CHECK-NEXT: call void @llvm.dbg.declare(metadata i{{32|64}}* %i.addr,
16-
// CHECK-SAME: metadata ![[I:[0-9]+]],
1718
// CHECK: ![[I]] = !DILocalVariable(name: "i",
1819
}

test/DebugInfo/debug_value_addr.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
// CHECK: define {{.*}}_T016debug_value_addr4testyxlF
1111
// CHECK: entry:
1212
// CHECK-NEXT: %[[TADDR:.*]] = alloca
13-
// CHECK: store %swift.opaque* %0, %swift.opaque** %[[TADDR:.*]], align
1413
// CHECK-NEXT: call void @llvm.dbg.declare({{.*}}%[[TADDR]]
14+
// CHECK: store %swift.opaque* %0, %swift.opaque** %[[TADDR:.*]], align
1515

1616
struct S<T> {
1717
var a : T

test/DebugInfo/generic_arg.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import StdlibUnittest
33
func foo<T>(_ x: T) -> () {
44
// CHECK: define {{.*}} @_T011generic_arg3fooyxlF
55
// CHECK: %[[T:.*]] = alloca %swift.type*
6-
// CHECK: %[[X:.*]] = alloca %swift.opaque*
7-
// CHECK: store %swift.type* %T, %swift.type** %[[T]],
86
// CHECK: call void @llvm.dbg.declare(metadata %swift.type** %[[T]],
97
// CHECK-SAME: metadata ![[T1:.*]], metadata ![[EMPTY:.*]])
10-
// CHECK: store %swift.opaque* %0, %swift.opaque** %[[X]],
8+
// CHECK: %[[X:.*]] = alloca %swift.opaque*
119
// CHECK: call void @llvm.dbg.declare(metadata %swift.opaque** %[[X]],
1210
// CHECK-SAME: metadata ![[X1:.*]], metadata ![[EMPTY]])
11+
// CHECK: store %swift.type* %T, %swift.type** %[[T]],
12+
// CHECK: store %swift.opaque* %0, %swift.opaque** %[[X]],
1313
// CHECK: ![[T1]] = !DILocalVariable(name: "$swift.type.T",
1414
// CHECK-SAME: flags: DIFlagArtificial)
1515
// CHECK: ![[EMPTY]] = !DIExpression()

test/DebugInfo/generic_arg3.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ func apply<Type>(_ T : Type, fn: (Type) -> Type) -> Type { return fn(T) }
55
public func f<Type>(_ value : Type)
66
{
77
// CHECK: define {{.*}}_T012generic_arg31fyxlFxxcfU_
8-
// CHECK: store %swift.opaque* %1, %swift.opaque** %[[ALLOCA:.*]], align
9-
// CHECK: call void @llvm.dbg.declare(metadata %swift.opaque** %[[ALLOCA]],
8+
// CHECK: call void @llvm.dbg.declare(metadata %swift.opaque** %[[ALLOCA:[^,]+]],
109
// CHECK-SAME: metadata ![[ARG:.*]], metadata ![[EXPR:.*]])
10+
// CHECK: store %swift.opaque* %1, %swift.opaque** %[[ALLOCA]], align
1111
// No deref here: The argument is an Archetype and this implicitly indirect.
1212
// CHECK: ![[EXPR]] = !DIExpression()
1313
// CHECK: ![[TY:.*]] = !DICompositeType({{.*}}identifier: "_T012generic_arg31fyxlFQq_D"

test/DebugInfo/generic_arg4.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
public struct Q<T> {
44
let x: T
55
}
6-
// CHECK: define {{.*}}_T012generic_arg43fooySayAA1QVyxGGlF
7-
// CHECK: store %[[TY:.*]]* %0, %[[TY]]** %[[ALLOCA:.*]], align
8-
// CHECK: call void @llvm.dbg.declare(metadata %[[TY]]** %[[ALLOCA]],
9-
// CHECK-SAME: metadata ![[ARG:.*]], metadata ![[EXPR:.*]])
10-
// No deref here: the array argument is passed by value.
11-
// CHECK: ![[EXPR]] = !DIExpression()
12-
// CHECK: ![[ARG]] = !DILocalVariable(name: "arg", arg: 1,
13-
// CHECK-SAME: line: [[@LINE+2]], type: ![[TY:.*]])
14-
// CHECK: ![[TY]] = !DICompositeType({{.*}}identifier: "_T0Say12generic_arg41QVyAA3fooySayACyxGGlFQq_GGD")
6+
// CHECK: define {{.*}}_T012generic_arg43fooySayAA1QVyxGGlF
7+
// CHECK: call void @llvm.dbg.declare
8+
// CHECK: call void @llvm.dbg.declare(metadata %[[TY:.*]]** %[[ALLOCA:[^,]+]],
9+
// CHECK-SAME: metadata ![[ARG:.*]], metadata ![[EXPR:.*]])
10+
// CHECK: store %[[TY]]* %0, %[[TY]]** %[[ALLOCA]], align
11+
// No deref here: the array argument is passed by value.
12+
// CHECK: ![[EXPR]] = !DIExpression()
13+
// CHECK: ![[ARG]] = !DILocalVariable(name: "arg", arg: 1,
14+
// CHECK-SAME: line: [[@LINE+2]], type: ![[TY:.*]])
15+
// CHECK: ![[TY]] = !DICompositeType({{.*}}identifier: "_T0Say12generic_arg41QVyAA3fooySayACyxGGlFQq_GGD")
1516
public func foo<T>(_ arg: [Q<T>]) {
1617
}

test/DebugInfo/generic_arg5.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ public struct S<Type>
77
public func foo<Type>(_ values : [S<Type>])
88
{
99
// CHECK: define {{.*}}_T012generic_arg53fooySayAA1SVyxGGlFAESgAEcfU_
10-
// CHECK: store %[[TY:.*]]* %1, %[[TY]]** %[[ALLOCA:.*]], align
11-
// CHECK: call void @llvm.dbg.declare(metadata %[[TY]]** %[[ALLOCA]],
10+
// CHECK: call void @llvm.dbg.declare
11+
// CHECK: call void @llvm.dbg.declare(metadata %[[TY:.*]]** %[[ALLOCA:[^,]+]],
1212
// CHECK-SAME: metadata ![[ARG:.*]], metadata ![[EXPR:.*]])
13+
// CHECK: store %[[TY]]* %1, %[[TY]]** %[[ALLOCA]], align
1314
// The argument is a by-ref struct and thus needs to be dereferenced.
1415
// CHECK: ![[ARG]] = !DILocalVariable(name: "arg", arg: 1,
1516
// CHECK-SAME: line: [[@LINE+4]],

test/DebugInfo/guard-let.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ func use<T>(_ t: T) {}
55
public func f(_ i : Int?)
66
{
77
// CHECK: define {{.*}}@_T04main1fySiSgF
8-
// CHECK: %[[PHI:.*]] = phi
98
// The shadow copy store should not have a location.
10-
// Note that the strore must be in the same scope or else it might defeat
9+
// Note that the store must be in the same scope or else it might defeat
1110
// livedebugvalues.
12-
// CHECK: store {{(i32|i64)}} %[[PHI]], {{(i32|i64)}}* %val.addr, align {{(4|8)}}, !dbg ![[DBG0:.*]]
13-
// CHECK: @llvm.dbg.declare(metadata {{(i32|i64)}}* %val.addr, {{.*}}, !dbg ![[DBG1:.*]]
14-
// CHECK: ![[F:.*]] = distinct !DISubprogram(name: "f",
15-
// CHECK: ![[BLK:.*]] = distinct !DILexicalBlock(scope: ![[F]],
16-
// CHECK: ![[DBG0]] = !DILocation(line: 0, scope: ![[BLK]])
17-
// CHECK: ![[DBG1]] = !DILocation(line: [[@LINE+1]], {{.*}}scope: ![[BLK]]
11+
// CHECK1: @llvm.dbg.declare(metadata {{(i32|i64)}}* %val.addr, {{.*}}, !dbg ![[DBG0:.*]]
12+
// CHECK1: %[[PHI:.*]] = phi
13+
// CHECK1: store {{(i32|i64)}} %[[PHI]], {{(i32|i64)}}* %val.addr, align {{(4|8)}}, !dbg ![[DBG1:.*]]
14+
// CHECK1: ![[F:.*]] = distinct !DISubprogram(name: "f",
15+
// CHECK1: ![[BLK:.*]] = distinct !DILexicalBlock(scope: ![[F]],
16+
// CHECK1: ![[DBG0]] = !DILocation(line: [[@LINE+2]],
17+
// CHECK1: ![[DBG1]] = !DILocation(line: 0, scope: ![[BLK]])
1818
guard let val = i else { return }
1919
use(val)
2020
}

test/DebugInfo/if.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ func yieldValue() -> Int64? { return 23 }
44

55
// Verify that variables bound in the while statements are in distinct scopes.
66
if let val = yieldValue() {
7-
// CHECK: ![[SCOPE1:[0-9]+]] = distinct !DILexicalBlock(scope: ![[MAIN:[0-9]+]]
8-
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE1]]
7+
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE1:[0-9]+]]
8+
// CHECK: ![[SCOPE1]] = distinct !DILexicalBlock(scope: ![[MAIN:[0-9]+]]
99
}
1010
if let val = yieldValue() {
11-
// CHECK: ![[SCOPE2:[0-9]+]] = distinct !DILexicalBlock(scope: ![[MAIN]]
12-
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE2]]
11+
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE2:[0-9]+]]
12+
// CHECK: ![[SCOPE2]] = distinct !DILexicalBlock(scope: ![[MAIN]]
1313
}

test/DebugInfo/iuo_arg.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ class MyClass {
1717
func filterImage(_ image: UIImage!, _ doSomething:Bool) -> UIImage
1818
{
1919
// Test that image is in an alloca, but not an indirect location.
20-
// CHECK: store {{(i32|i64)}} %0, {{(i32|i64)}}* %[[ALLOCA:.*]], align
21-
// CHECK: call void @llvm.dbg.declare(metadata {{(i32|i64)}}* %[[ALLOCA]], metadata ![[IMAGE:.*]], metadata !{{[0-9]+}})
20+
// CHECK: call void @llvm.dbg.declare(metadata {{(i32|i64)}}* %[[ALLOCA:.*]], metadata ![[IMAGE:.*]], metadata !{{[0-9]+}})
21+
// CHECK: store {{(i32|i64)}} %0, {{(i32|i64)}}* %[[ALLOCA]], align
2222
// CHECK: ![[IMAGE]] = !DILocalVariable(name: "image", arg: 1
2323
// CHECK-NOT: flags:
2424
// CHECK-SAME: line: [[@LINE-7]]

test/DebugInfo/let.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@ class DeepThought {
66

77
func foo() -> Int64 {
88
// CHECK: call void @llvm.dbg.declare(metadata %T3let11DeepThoughtC** {{.*}}, metadata ![[A:.*]], metadata !{{[0-9]+}})
9-
// CHECK: !DILocalVariable(name: "machine"
10-
// CHECK-NOT: flags:
11-
// CHECK-SAME: line: [[@LINE+1]],
9+
// CHECK-DAG: !DILocalVariable(name: "machine",{{.*}}line: [[@LINE+1]], type: !{{[0-9]+}})
1210
let machine = DeepThought()
13-
// CHECK: !DILocalVariable(name: "a"
14-
// CHECK-SAME: line: [[@LINE+1]],
11+
// CHECK-DAG: !DILocalVariable(name: "a", {{.*}}line: [[@LINE+1]],
1512
let a = machine.query()
1613
return a
1714
}

test/DebugInfo/patternmatching.swift

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
func markUsed<T>(_ t: T) {}
77

8+
// CHECK-SCOPES: define {{.*}}classifyPoint2
89
func classifyPoint2(_ p: (Double, Double)) {
910
func return_same (_ input : Double) -> Double
1011
{
@@ -24,33 +25,34 @@ switch p {
2425
// SIL-CHECK: dealloc_stack{{.*}}line:[[@LINE-1]]:17:cleanup
2526
// Verify that the branch has a location >= the cleanup.
2627
// SIL-CHECK-NEXT: br{{.*}}line:[[@LINE-3]]:17:cleanup
27-
// CHECK-SCOPES: call {{.*}}markUsed
28+
// CHECK-SCOPES: call void @llvm.dbg
29+
// CHECK-SCOPES: call void @llvm.dbg
30+
// CHECK-SCOPES: call void @llvm.dbg
2831
// CHECK-SCOPES: call void @llvm.dbg{{.*}}metadata ![[X1:[0-9]+]],
2932
// CHECK-SCOPES-SAME: !dbg ![[X1LOC:[0-9]+]]
3033
// CHECK-SCOPES: call void @llvm.dbg
3134
// CHECK-SCOPES: call void @llvm.dbg{{.*}}metadata ![[X2:[0-9]+]],
32-
// CHECK-SCOPES-SAME: !dbg ![[X2LOC:[0-9]+]]
35+
// CHECK-SCOPES-SAME: !dbg ![[X2LOC:[0-9]+]]
3336
// CHECK-SCOPES: call void @llvm.dbg
3437
// CHECK-SCOPES: call void @llvm.dbg{{.*}}metadata ![[X3:[0-9]+]],
35-
// CHECK-SCOPES-SAME: !dbg ![[X3LOC:[0-9]+]]
36-
// CHECK-SCOPES: !DILocalVariable(name: "x",
38+
// CHECK-SCOPES-SAME: !dbg ![[X3LOC:[0-9]+]]
3739
case (let x, let y) where x == -y:
3840
// Verify that all variables end up in separate appropriate scopes.
39-
// CHECK-SCOPES: !DILocalVariable(name: "x", scope: ![[SCOPE1:[0-9]+]],
40-
// CHECK-SCOPES-SAME: line: [[@LINE-3]]
41+
// CHECK-SCOPES: ![[X1]] = !DILocalVariable(name: "x", scope: ![[SCOPE1:[0-9]+]],
42+
// CHECK-SCOPES-SAME: line: [[@LINE-3]]
4143
// CHECK-SCOPES: ![[X1LOC]] = !DILocation(line: [[@LINE-4]], column: 15,
4244
// CHECK-SCOPES-SAME: scope: ![[SCOPE1]])
4345
// FIXME: ![[SCOPE1]] = distinct !DILexicalBlock({{.*}}line: [[@LINE-6]]
4446
markUsed(x)
4547
case (let x, let y) where x >= -10 && x < 10 && y >= -10 && y < 10:
46-
// CHECK-SCOPES: !DILocalVariable(name: "x", scope: ![[SCOPE2:[0-9]+]],
47-
// CHECK-SCOPES-SAME: line: [[@LINE-2]]
48+
// CHECK-SCOPES: ![[X2]] = !DILocalVariable(name: "x", scope: ![[SCOPE2:[0-9]+]],
49+
// CHECK-SCOPES-SAME: line: [[@LINE-2]]
4850
// CHECK-SCOPES: ![[X2LOC]] = !DILocation(line: [[@LINE-3]], column: 15,
4951
// CHECK-SCOPES-SAME: scope: ![[SCOPE2]])
5052
markUsed(x)
5153
case (let x, let y):
52-
// CHECK-SCOPES: !DILocalVariable(name: "x", scope: ![[SCOPE3:[0-9]+]],
53-
// CHECK-SCOPES-SAME: line: [[@LINE-2]]
54+
// CHECK-SCOPES: ![[X3]] = !DILocalVariable(name: "x", scope: ![[SCOPE3:[0-9]+]],
55+
// CHECK-SCOPES-SAME: line: [[@LINE-2]]
5456
// CHECK-SCOPES: ![[X3LOC]] = !DILocation(line: [[@LINE-3]], column: 15,
5557
// CHECK-SCOPES-SAME: scope: ![[SCOPE3]])
5658
markUsed(x)

test/DebugInfo/returnlocation.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Foundation
1212
// CHECK_NONE: define{{( protected)?}} {{.*}}void {{.*}}none
1313
public func none(_ a: inout Int64) {
1414
// CHECK_NONE: call void @llvm.dbg{{.*}}, !dbg
15+
// CHECK_NONE: store{{.*}}, !dbg
1516
// CHECK_NONE: !dbg ![[NONE_INIT:.*]]
1617
a -= 2
1718
// CHECK_NONE: ret {{.*}}, !dbg ![[NONE_RET:.*]]

test/DebugInfo/shadowcopy-linetable.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ func foo(_ x: inout Int64) {
77
// line 0), but the code to load the value from the inout storage is
88
// not.
99
// CHECK: %[[X:.*]] = alloca %Ts5Int64V*, align {{(4|8)}}
10+
// CHECK-NEXT: call void @llvm.dbg.declare
1011
// CHECK: store %Ts5Int64V* %0, %Ts5Int64V** %[[X]], align {{(4|8)}}
1112
// CHECK-SAME: !dbg ![[LOC0:.*]]
12-
// CHECK-NEXT: call void @llvm.dbg.declare
1313
// CHECK-NEXT: getelementptr inbounds %Ts5Int64V, %Ts5Int64V* %0, i32 0, i32 0,
1414
// CHECK-SAME: !dbg ![[LOC1:.*]]
1515
// CHECK: ![[LOC0]] = !DILocation(line: 0,

test/DebugInfo/while.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ func yieldValues() -> Int64? { return .none }
44

55
// Verify that variables bound in the while statements are in distinct scopes.
66
while let val = yieldValues() {
7-
// CHECK: ![[SCOPE1:[0-9]+]] = distinct !DILexicalBlock(scope: ![[MAIN:[0-9]+]]
8-
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE1]]
7+
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE1:[0-9]+]]
8+
// CHECK: ![[SCOPE1]] = distinct !DILexicalBlock(scope: ![[MAIN:[0-9]+]]
99
}
1010
while let val = yieldValues() {
11-
// CHECK: ![[SCOPE2:[0-9]+]] = distinct !DILexicalBlock(scope: ![[MAIN]]
12-
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE2]]
11+
// CHECK: !DILocalVariable(name: "val", scope: ![[SCOPE2:[0-9]+]]
12+
// CHECK: ![[SCOPE2]] = distinct !DILexicalBlock(scope: ![[MAIN]]
1313
}

0 commit comments

Comments
 (0)