@@ -29,6 +29,21 @@ fn r#ref(ref_foo: &Foo) -> i32 {
29
29
ref_foo. 0
30
30
}
31
31
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
+
32
47
#[ no_mangle]
33
48
fn ptr ( ptr_foo : Foo ) -> i32 {
34
49
// CHECK-LABEL: define {{.*}} i32 @ptr
@@ -94,3 +109,5 @@ pub fn tuple(foo: (i32, &Foo)) -> i32 {
94
109
// CHECK-DAG: [[VAR_fragment_f]] = !DILocalVariable(name: "fragment_f"
95
110
// CHECK-DAG: [[VAR_tuple_dead]] = !DILocalVariable(name: "tuple_dead"
96
111
// 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