| //@ min-lldb-version: 1800 |
| //@ min-gdb-version: 13.0 |
| //@ compile-flags: -g -Copt-level=3 |
| //@ disable-gdb-pretty-printers |
| |
| // Checks that we still can access dead variables from debuginfos. |
| |
| // === GDB TESTS =================================================================================== |
| |
| // gdb-command:run |
| // gdb-command:print *ref_v0 |
| // gdb-check:$1 = 0 |
| |
| // gdb-command:print *ref_v1 |
| // gdb-check:$2 = 1 |
| |
| // gdb-command:print *ref_v2 |
| // gdb-check:$3 = 2 |
| |
| // === LLDB TESTS ================================================================================== |
| |
| // lldb-command:run |
| // lldb-command:v *ref_v0 |
| // lldb-check:[...] 0 |
| |
| // lldb-command:v *ref_v1 |
| // lldb-check:[...] 1 |
| |
| // lldb-command:v *ref_v2 |
| // lldb-check:[...] 2 |
| |
| #![allow(unused_variables)] |
| |
| use std::hint::black_box; |
| |
| pub struct Foo(i32, i64, i32); |
| |
| #[inline(never)] |
| #[no_mangle] |
| fn test_ref(ref_foo: &Foo) -> i32 { |
| let ref_v0 = &ref_foo.0; |
| let ref_v1 = &ref_foo.1; |
| let ref_v2 = &ref_foo.2; |
| ref_foo.0 // #break |
| } |
| |
| fn main() { |
| let foo = black_box(Foo(0, 1, 2)); |
| black_box(test_ref(&foo)); |
| } |