Skip to content

Commit db8aee0

Browse files
committed
fixup! codegen: Generate dbg_value for the ref statement
Add a test case with the same local.
1 parent cd2784f commit db8aee0

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

tests/codegen-llvm/debuginfo-dse.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,21 @@ fn r#ref(ref_foo: &Foo) -> i32 {
2929
ref_foo.0
3030
}
3131

32+
#[no_mangle]
33+
pub fn dead_first(dead_first_foo: &Foo) -> &i32 {
34+
// CHECK-LABEL: def {{.*}} ptr @dead_first
35+
// CHECK-SAME: (ptr {{.*}} [[ARG_dead_first_foo:%.*]])
36+
// CODEGEN: #dbg_declare(ptr %dead_first_foo.dbg.spill, [[ARG_dead_first_foo:![0-9]+]], !DIExpression()
37+
// OPTIMIZED: #dbg_value(ptr %dead_first_foo, [[ARG_dead_first_foo:![0-9]+]], !DIExpression()
38+
// CHECK: #dbg_value(ptr %dead_first_foo, [[VAR_dead_first_v0:![0-9]+]], !DIExpression()
39+
// CHECK: %dead_first_v0 = getelementptr{{.*}} i8, ptr %dead_first_foo, i64 16
40+
// CODEGEN: #dbg_declare(ptr %dead_first_v0.dbg.spill, [[VAR_dead_first_v0]], !DIExpression()
41+
// OPTIMIZED: #dbg_value(ptr %dead_first_v0, [[VAR_dead_first_v0]], !DIExpression()
42+
let mut dead_first_v0 = &dead_first_foo.0;
43+
dead_first_v0 = &dead_first_foo.2;
44+
dead_first_v0
45+
}
46+
3247
#[no_mangle]
3348
fn ptr(ptr_foo: Foo) -> i32 {
3449
// CHECK-LABEL: define {{.*}} i32 @ptr
@@ -94,3 +109,5 @@ pub fn tuple(foo: (i32, &Foo)) -> i32 {
94109
// CHECK-DAG: [[VAR_fragment_f]] = !DILocalVariable(name: "fragment_f"
95110
// CHECK-DAG: [[VAR_tuple_dead]] = !DILocalVariable(name: "tuple_dead"
96111
// CHECK-DAG: [[VAR_deref_dead]] = !DILocalVariable(name: "deref_dead"
112+
// CHECK-DAG: [[ARG_dead_first_foo]] = !DILocalVariable(name: "dead_first_foo", arg: 1
113+
// CHECK-DAG: [[VAR_dead_first_v0]] = !DILocalVariable(name: "dead_first_v0"

0 commit comments

Comments
 (0)