diff options
| author | dianqk <dianqk@dianqk.net> | 2025-06-28 10:32:08 +0800 |
|---|---|---|
| committer | Josh Stone <jistone@redhat.com> | 2025-07-10 13:30:37 -0700 |
| commit | 5ebfeddae5adfe34e1d41091767c807599769215 (patch) | |
| tree | 74e849d41f1323460fa0652a20acb57855ad3ba7 /tests | |
| parent | 736f54bb355da1c11e2eaabba70ada55b88e1b01 (diff) | |
| download | rust-5ebfeddae5adfe34e1d41091767c807599769215.tar.gz rust-5ebfeddae5adfe34e1d41091767c807599769215.zip | |
Add a regression test for ld64
(cherry picked from commit 32115c3a1710d1ac98b2ffea23014e0d2ee19c0d)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/darwin-ld64.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/ui/darwin-ld64.rs b/tests/ui/darwin-ld64.rs new file mode 100644 index 00000000000..75acc07a002 --- /dev/null +++ b/tests/ui/darwin-ld64.rs @@ -0,0 +1,24 @@ +//@ compile-flags: -Copt-level=3 -Ccodegen-units=256 -Clink-arg=-ld_classic +//@ run-pass +//@ only-x86_64-apple-darwin + +// This is a regression test for https://github.com/rust-lang/rust/issues/140686. +// Although this is a ld64(ld-classic) bug, we still need to support it +// due to cross-compilation and support for older Xcode. + +fn main() { + let dst: Vec<u8> = Vec::new(); + let len = broken_func(std::hint::black_box(2), dst); + assert_eq!(len, 8); +} + +#[inline(never)] +pub fn broken_func(version: usize, mut dst: Vec<u8>) -> usize { + match version { + 1 => dst.extend_from_slice(b"aaaaaaaa"), + 2 => dst.extend_from_slice(b"bbbbbbbb"), + 3 => dst.extend_from_slice(b"bbbbbbbb"), + _ => panic!(), + } + dst.len() +} |
