diff options
Diffstat (limited to 'tests/codegen-llvm/cold-call-declare-and-call.rs')
| -rw-r--r-- | tests/codegen-llvm/cold-call-declare-and-call.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/codegen-llvm/cold-call-declare-and-call.rs b/tests/codegen-llvm/cold-call-declare-and-call.rs new file mode 100644 index 00000000000..b18565ee6c3 --- /dev/null +++ b/tests/codegen-llvm/cold-call-declare-and-call.rs @@ -0,0 +1,27 @@ +//@ revisions: NORMAL WIN +//@ compile-flags: -C no-prepopulate-passes +//@[NORMAL] ignore-windows +//@[WIN] only-windows +//@[WIN] only-x86_64 + +#![crate_type = "lib"] +#![feature(rust_cold_cc)] + +// wasm marks the definition as `dso_local`, so allow that as optional. + +// NORMAL: define{{( dso_local)?}} preserve_mostcc void @this_should_never_happen(i16 +// NORMAL: call preserve_mostcc void @this_should_never_happen(i16 + +// See the comment in `Target::adjust_abi` for why this differs + +// WIN: define void @this_should_never_happen(i16 +// WIN: call void @this_should_never_happen(i16 + +#[no_mangle] +pub extern "rust-cold" fn this_should_never_happen(x: u16) {} + +pub fn do_things(x: u16) { + if x == 12345 { + this_should_never_happen(54321); + } +} |
