@@ -38,13 +38,13 @@ public protocol P {
3838// CHECK: call void @llvm.dbg.declare(metadata {{.*}}** %m.debug, metadata ![[M_COPYABLE_VALUE_TEST:[0-9]*]],
3939//
4040// We should have a llvm.dbg.addr for k since we moved it.
41- // CHECK: call void @llvm.dbg.addr(metadata {{.*}}** %k.debug, metadata ![[K_COPYABLE_VALUE_TEST:[0-9]*]],
41+ // CHECK: call void @llvm.dbg.addr(metadata {{.*}}** %k.debug, metadata ![[K_COPYABLE_VALUE_TEST:[0-9]*]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
4242//
4343// Our undef should be an llvm.dbg.value. Counter-intuitively this works for
4444// both llvm.dbg.addr /and/ llvm.dbg.value. Importantly though its metadata
4545// should be for k since that is the variable that we are telling the debugger
4646// is no longer defined.
47- // CHECK: call void @llvm.dbg.value(metadata %T21move_function_dbginfo5KlassC* undef, metadata ![[K_COPYABLE_VALUE_TEST]],
47+ // CHECK: call void @llvm.dbg.value(metadata %T21move_function_dbginfo5KlassC* undef, metadata ![[K_COPYABLE_VALUE_TEST]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
4848//
4949// CHECK: ret void
5050// CHECK-NEXT: }
@@ -81,8 +81,10 @@ public func copyableValueTest() {
8181
8282// CHECK-LABEL: define swiftcc void @"$s21move_function_dbginfo15copyableVarTestyyF"()
8383// CHECK: call void @llvm.dbg.declare(metadata %T21move_function_dbginfo5KlassC** %m.debug,
84- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k, metadata ![[K_COPYABLE_VAR_METADATA:[0-9]+]],
85- // CHECK: call void @llvm.dbg.value(metadata %T21move_function_dbginfo5KlassC** undef, metadata ![[K_COPYABLE_VAR_METADATA]],
84+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k, metadata ![[K_COPYABLE_VAR_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
85+ // CHECK: call void @llvm.dbg.value(metadata %T21move_function_dbginfo5KlassC** undef, metadata ![[K_COPYABLE_VAR_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
86+ // TODO: Should this be a deref like the original?
87+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k, metadata ![[K_COPYABLE_VAR_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
8688// CHECK: ret void
8789// CHECK-NEXT: }
8890//
@@ -123,8 +125,8 @@ public func copyableVarTest() {
123125// CHECK: @llvm.dbg.declare(metadata %swift.type** %T1,
124126// CHECK: @llvm.dbg.declare(metadata %swift.opaque** %x.debug,
125127// CHECK: @llvm.dbg.declare(metadata i8** %m.debug,
126- // CHECK: @llvm.dbg.addr(metadata i8** %k.debug, metadata ![[K_ADDR_LET_METADATA:[0-9]+]],
127- // CHECK: @llvm.dbg.value(metadata %swift.opaque* undef, metadata ![[K_ADDR_LET_METADATA]],
128+ // CHECK: @llvm.dbg.addr(metadata i8** %k.debug, metadata ![[K_ADDR_LET_METADATA:[0-9]+]], metadata !DIExpression(DW_OP_deref)), !dbg ![[ADDR_LOC:[0-9]*]]
129+ // CHECK: @llvm.dbg.value(metadata %swift.opaque* undef, metadata ![[K_ADDR_LET_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
128130// CHECK: ret void
129131// CHECK-NEXT: }
130132//
@@ -173,8 +175,9 @@ public func addressOnlyValueTest<T : P>(_ x: T) {
173175// CHECK: @llvm.dbg.declare(metadata %swift.type** %T1,
174176// CHECK: @llvm.dbg.declare(metadata %swift.opaque** %x.debug,
175177// CHECK: @llvm.dbg.declare(metadata i8** %m.debug,
176- // CHECK: @llvm.dbg.addr(metadata i8** %k.debug, metadata ![[K_ADDRONLY_VAR_METADATA:[0-9]+]],
177- // CHECK: @llvm.dbg.value(metadata %swift.opaque* undef, metadata ![[K_ADDRONLY_VAR_METADATA]],
178+ // CHECK: @llvm.dbg.addr(metadata i8** %k.debug, metadata ![[K_ADDRONLY_VAR_METADATA:[0-9]+]], metadata !DIExpression(DW_OP_deref)), !dbg ![[ADDR_LOC:[0-9]*]]
179+ // CHECK: @llvm.dbg.value(metadata %swift.opaque* undef, metadata ![[K_ADDRONLY_VAR_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
180+ // CHECK: @llvm.dbg.addr(metadata i8** %k.debug, metadata ![[K_ADDRONLY_VAR_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
178181// CHECK: ret void
179182// CHECK-NEXT: }
180183//
0 commit comments