// This test case makes sure that we get proper break points for binaries
// compiled with multiple codegen units. (see #39160)

//@ compile-flags:-g -Ccodegen-units=2
//@ disable-gdb-pretty-printers
//@ ignore-backends: gcc

// === GDB TESTS ===============================================================

// gdb-command:run

// gdb-command:print xxx
// gdb-check:$1 = 12345
// gdb-command:continue

// gdb-command:print yyy
// gdb-check:$2 = 67890
// gdb-command:continue


// === LLDB TESTS ==============================================================

// lldb-command:run

// lldb-command:v xxx
// lldb-check:[...] 12345
// lldb-command:continue

// lldb-command:v yyy
// lldb-check:[...] 67890
// lldb-command:continue


mod a {
    pub fn foo(xxx: u32) {
        super::_zzz(); // #break
    }
}

mod b {
    pub fn bar(yyy: u64) {
        super::_zzz(); // #break
    }
}

fn main() {
    a::foo(12345);
    b::bar(67890);
}

#[inline(never)]
fn _zzz() {}
