51 lines
1.1 KiB
Rust
51 lines
1.1 KiB
Rust
//@ 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));
|
|
}
|