33// RUN: %target-swift-frontend -parse-as-library -Xllvm -sil-disable-pass=alloc-stack-hoisting -g -c %s -o %t/out.o
44// RUN: %llvm-dwarfdump --show-children %t/out.o | %FileCheck -check-prefix=DWARF %s
55
6- // rdar://90028779
7- // REQUIRES: rdar90028779
8-
96// This test checks that:
107//
118// 1. At the IR level, we insert the appropriate llvm.dbg.addr, llvm.dbg.value.
@@ -90,11 +87,11 @@ public func copyableValueTest() {
9087
9188// CHECK-LABEL: define swiftcc void @"$s21move_function_dbginfo15copyableVarTestyyF"()
9289// CHECK: call void @llvm.dbg.declare(metadata %T21move_function_dbginfo5KlassC** %m.debug,
93- // 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]*]]
90+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** [[VAR:%.*]] , metadata ![[K_COPYABLE_VAR_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
9491// CHECK-NEXT: br
9592// CHECK: call void @llvm.dbg.value(metadata %T21move_function_dbginfo5KlassC** undef, metadata ![[K_COPYABLE_VAR_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
9693// TODO: Should this be a deref like the original?
97- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k , metadata ![[K_COPYABLE_VAR_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
94+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** [[VAR]] , metadata ![[K_COPYABLE_VAR_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
9895// CHECK-NEXT: br
9996// CHECK: ret void
10097// CHECK-NEXT: }
@@ -263,7 +260,7 @@ public func copyableValueCCFlowTest() {
263260
264261// CHECK-LABEL: define swiftcc void @"$s21move_function_dbginfo037copyableVarTestCCFlowReinitOutOfBlockF0yyF"(
265262// CHECK: call void @llvm.dbg.declare(metadata %T21move_function_dbginfo5KlassC** %m.debug,
266- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
263+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** [[VAR:%.*]] , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
267264// CHECK-NEXT: br label %[[BB_NEXT:[a-z0-9\.]+]],
268265//
269266// CHECK: [[BB_NEXT]]:
@@ -278,7 +275,7 @@ public func copyableValueCCFlowTest() {
278275//
279276// CHECK: [[CONT_BB]]:
280277// TODO: Should this be a deref like the original?
281- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
278+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** [[VAR]] , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
282279// CHECK-NEXT: br
283280// CHECK: ret void
284281// CHECK-NEXT: }
@@ -296,7 +293,7 @@ public func copyableVarTestCCFlowReinitOutOfBlockTest() {
296293// CHECK-LABEL: define swiftcc void @"$s21move_function_dbginfo034copyableVarTestCCFlowReinitInBlockF0yyF"(
297294// CHECK: entry:
298295// CHECK: call void @llvm.dbg.declare(metadata %T21move_function_dbginfo5KlassC** %m.debug,
299- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
296+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** [[VAR:%.*]] , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
300297// CHECK-NEXT: br label %[[BB_NEXT:[a-z0-9\.]+]],
301298//
302299// CHECK: [[BB_NEXT]]:
@@ -305,7 +302,7 @@ public func copyableVarTestCCFlowReinitOutOfBlockTest() {
305302// CHECK: [[LHS]]:
306303// CHECK: call void @llvm.dbg.value(metadata %T21move_function_dbginfo5KlassC** undef, metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
307304// TODO: Should this be a deref like the original?
308- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** %k , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
305+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo5KlassC** [[VAR]] , metadata ![[K_COPYABLE_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
309306// CHECK-NEXT: br label %[[BB_NEXT_2:[a-z\.0-9]+]],
310307//
311308// CHECK: [[BB_NEXT_2]]:
@@ -330,7 +327,7 @@ public func copyableVarTestCCFlowReinitInBlockTest() {
330327
331328// CHECK-LABEL: define swiftcc void @"$s21move_function_dbginfo040addressOnlyVarTestCCFlowReinitOutOfBlockG0yyxmAA1PRzlF"(
332329// CHECK: entry:
333- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* %k , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
330+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* [[VAR:%.*]] , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
334331// CHECK-NEXT: br label %[[BB_NEXT:[a-z0-9\.]+]],
335332//
336333// CHECK: [[BB_NEXT]]:
@@ -345,7 +342,7 @@ public func copyableVarTestCCFlowReinitInBlockTest() {
345342//
346343// CHECK: [[CONT_BB]]:
347344// TODO: Should this be a deref like the original?
348- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* %k , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
345+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* [[VAR]] , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_OUT_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
349346// CHECK-NEXT: br
350347// CHECK: ret void
351348// CHECK-NEXT: }
@@ -362,7 +359,7 @@ public func addressOnlyVarTestCCFlowReinitOutOfBlockTest<T : P>(_ x: T.Type) {
362359
363360// CHECK-LABEL: define swiftcc void @"$s21move_function_dbginfo037addressOnlyVarTestCCFlowReinitInBlockG0yyxmAA1PRzlF"(
364361// CHECK: entry:
365- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* %k , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
362+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* [[VAR:%.*]] , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA:[0-9]+]], metadata !DIExpression()), !dbg ![[ADDR_LOC:[0-9]*]]
366363// CHECK-NEXT: br label %[[BB_NEXT:[a-z0-9\.]+]],
367364//
368365// CHECK: [[BB_NEXT]]:
@@ -371,7 +368,7 @@ public func addressOnlyVarTestCCFlowReinitOutOfBlockTest<T : P>(_ x: T.Type) {
371368// CHECK: [[LHS]]:
372369// CHECK: call void @llvm.dbg.value(metadata %T21move_function_dbginfo1PP* undef, metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
373370// TODO: Should this be a deref like the original?
374- // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* %k , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
371+ // CHECK: call void @llvm.dbg.addr(metadata %T21move_function_dbginfo1PP* [[VAR]] , metadata ![[K_ADDRESSONLY_VAR_CCFLOW_REINIT_IN_BLOCK_METADATA]], metadata !DIExpression()), !dbg ![[ADDR_LOC]]
375372// CHECK-NEXT: br label %[[BB_NEXT_2:[a-z\.0-9]+]],
376373//
377374// CHECK: [[BB_NEXT_2]]:
0 commit comments