mirror of
https://github.com/apple/swift.git
synced 2025-12-25 12:15:36 +01:00
Currently IRGen requires the AST node of a variable declaration to generate debug location. However, this will fail if the input is SIL due to the lack of AST reconstruction. Plus, it's unnecessary since we can just use the `SILLocation` attached on `debug_value` (and its friends) SIL instruction to generate the correct LLVM debug metadata. Resolves SR-14868
26 lines
885 B
Plaintext
26 lines
885 B
Plaintext
// RUN: %target-swiftc_driver -g -emit-ir %s | %FileCheck %s
|
|
sil_stage canonical
|
|
|
|
import Builtin
|
|
import Swift
|
|
|
|
sil_scope 2 { loc "simple.swift":1:2 parent @test_debug_value : $@convention(thin) (Int) -> () }
|
|
|
|
// SR-14868: Incorrect source location on `llvm.dbg.declare` when the input
|
|
// is SIL file.
|
|
|
|
// CHECK: @test_debug_value
|
|
// CHECK-SAME: !dbg ![[FUNC_DI:[0-9]+]]
|
|
sil hidden @test_debug_value : $@convention(thin) (Int) -> () {
|
|
bb0(%0 : $Int):
|
|
// CHECK: @llvm.dbg.declare(metadata i{{[0-9]+}}*
|
|
// CHECK-SAME: metadata ![[VAR_DI:[0-9]+]]
|
|
// CHECK-SAME: ), !dbg ![[LOC_DI:[0-9]+]]
|
|
debug_value %0 : $Int, let, name "x", argno 1, loc "simple.swift":3:4, scope 2
|
|
%1 = tuple ()
|
|
return %1 : $()
|
|
}
|
|
|
|
// CHECK: ![[VAR_DI]] = !DILocalVariable(name: "x", arg: 1
|
|
// CHECK: ![[LOC_DI]] = !DILocation(line: 3, column: 4, scope: ![[FUNC_DI]]
|