diff options
| author | Wesley Wiser <wesleywiser@microsoft.com> | 2022-10-25 16:57:21 -0400 |
|---|---|---|
| committer | Wesley Wiser <wesleywiser@microsoft.com> | 2022-11-03 11:17:42 -0400 |
| commit | cf6efe8137d88237b7e280a22eaea2f2193da47d (patch) | |
| tree | 994ec82108b509e50825558a5ec73fde42c8aa38 /src | |
| parent | 160b19429523ea44c4c3b7cad4233b2a35f58b8f (diff) | |
| download | rust-cf6efe8137d88237b7e280a22eaea2f2193da47d.tar.gz rust-cf6efe8137d88237b7e280a22eaea2f2193da47d.zip | |
Add test case
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/codegen/auxiliary/static_dllimport_aux.rs | 13 | ||||
| -rw-r--r-- | src/test/codegen/issue-81408-dllimport-thinlto-windows.rs | 15 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/test/codegen/auxiliary/static_dllimport_aux.rs b/src/test/codegen/auxiliary/static_dllimport_aux.rs new file mode 100644 index 00000000000..afb0dc42f44 --- /dev/null +++ b/src/test/codegen/auxiliary/static_dllimport_aux.rs @@ -0,0 +1,13 @@ +use std::sync::atomic::{AtomicPtr, Ordering}; + +#[inline(always)] +pub fn memrchr() { + fn detect() {} + + static CROSS_CRATE_STATIC_ITEM: AtomicPtr<()> = AtomicPtr::new(detect as *mut ()); + + unsafe { + let fun = CROSS_CRATE_STATIC_ITEM.load(Ordering::SeqCst); + std::mem::transmute::<*mut (), fn()>(fun)() + } +} diff --git a/src/test/codegen/issue-81408-dllimport-thinlto-windows.rs b/src/test/codegen/issue-81408-dllimport-thinlto-windows.rs new file mode 100644 index 00000000000..e674c0561d3 --- /dev/null +++ b/src/test/codegen/issue-81408-dllimport-thinlto-windows.rs @@ -0,0 +1,15 @@ +// compile-flags: -O -C lto=thin -C prefer-dynamic=no +// only-windows +// aux-build:static_dllimport_aux.rs + +// Test that on Windows, when performing ThinLTO, we do not mark cross-crate static items with +// dllimport because lld does not fix the symbol names for us. + +extern crate static_dllimport_aux; + +// CHECK-LABEL: @{{.+}}CROSS_CRATE_STATIC_ITEM{{.+}} = +// CHECK-SAME: external dllimport local_unnamed_addr global %"{{.+}}::AtomicPtr + +pub fn main() { + static_dllimport_aux::memrchr(); +} |
