blob: 61e741573346eb791c48434f7e49819b5f0f5a44 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
//@ 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));
}
|