rust/tests/codegen/static-relocation-model-msvc.rs
Nicholas Nethercote 72800d3b89 Run rustfmt on tests/codegen/.
Except for `simd-intrinsic/`, which has a lot of files containing
multiple types like `u8x64` which really are better when hand-formatted.

There is a surprising amount of two-space indenting in this directory.

Non-trivial changes:
- `rustfmt::skip` needed in `debug-column.rs` to preserve meaning of the
  test.
- `rustfmt::skip` used in a few places where hand-formatting read more
  nicely: `enum/enum-match.rs`
- Line number adjustments needed for the expected output of
  `debug-column.rs` and `coroutine-debug.rs`.
2024-05-31 15:56:43 +10:00

25 lines
871 B
Rust

// Verify linkage of external symbols in the static relocation model on MSVC.
//
//@ compile-flags: -O -C relocation-model=static
//@ aux-build: extern_decl.rs
//@ only-x86_64-pc-windows-msvc
#![crate_type = "rlib"]
extern crate extern_decl;
// The `extern_decl` definitions are imported from a statically linked rust
// crate, thus they are expected to be marked `dso_local` without `dllimport`.
//
// The `access_extern()` symbol is from this compilation unit, thus we expect
// it to be marked `dso_local` as well, given the static relocation model.
//
// CHECK: @extern_static = external dso_local local_unnamed_addr global i8
// CHECK: define dso_local noundef i8 @access_extern() {{.*}}
// CHECK: declare dso_local noundef i8 @extern_fn() {{.*}}
#[no_mangle]
pub fn access_extern() -> u8 {
unsafe { extern_decl::extern_fn() + extern_decl::extern_static }
}