37 lines
869 B
Rust
37 lines
869 B
Rust
//@ revisions:rpass1 rpass2
|
|
//@ compile-flags: -Z query-dep-graph
|
|
|
|
// We use #[inline(always)] to ensure that the downstream crate
|
|
// will always load the MIR for these functions
|
|
|
|
#![feature(rustc_attrs)]
|
|
|
|
#[allow(unused)]
|
|
macro_rules! first_macro {
|
|
() => {
|
|
println!("New call!");
|
|
}
|
|
}
|
|
|
|
#[rustc_clean(except="opt_hir_owner_nodes,typeck,optimized_mir,promoted_mir", cfg="rpass2")]
|
|
#[inline(always)]
|
|
pub fn changed_fn() {
|
|
// This will cause additional hygiene to be generate,
|
|
// which will cause the SyntaxContext/ExpnId raw ids to be
|
|
// different when we write out `my_fn` to the crate metadata.
|
|
#[cfg(rpass2)]
|
|
first_macro!();
|
|
}
|
|
|
|
macro_rules! print_loc {
|
|
() => {
|
|
println!("Caller loc: {}", std::panic::Location::caller());
|
|
}
|
|
}
|
|
|
|
#[rustc_clean(cfg="rpass2")]
|
|
#[inline(always)]
|
|
pub fn unchanged_fn() {
|
|
print_loc!();
|
|
}
|