diff options
| author | Augie Fackler <augie@google.com> | 2022-11-28 16:42:48 -0500 |
|---|---|---|
| committer | Augie Fackler <augie@google.com> | 2022-11-28 16:42:48 -0500 |
| commit | ef54e653c2fa6870b9830700aa8ec69330f50e78 (patch) | |
| tree | 8c3f8ac771883e56fdc7b366e3fda48f2bef6686 | |
| parent | 8a09420ac48658cad726e0a6997687ceac4151e3 (diff) | |
| download | rust-ef54e653c2fa6870b9830700aa8ec69330f50e78.tar.gz rust-ef54e653c2fa6870b9830700aa8ec69330f50e78.zip | |
sparc-struct-abi: work around new tail-call optimization
Upstream LLVM change https://reviews.llvm.org/D138741 introduced some new tail-call smarts for SPARC which broke some of the checks in this test. Rather than adjust the test expectations, we add an extra no-args function that can get tail-called or not without hurting the needs of the test.
| -rw-r--r-- | src/test/assembly/sparc-struct-abi.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/test/assembly/sparc-struct-abi.rs b/src/test/assembly/sparc-struct-abi.rs index 6a898b2974a..6309dd420ff 100644 --- a/src/test/assembly/sparc-struct-abi.rs +++ b/src/test/assembly/sparc-struct-abi.rs @@ -44,12 +44,16 @@ pub unsafe extern "C" fn callee(arg: Franta) { tst_use(arg.b); tst_use(arg.c); tst_use(arg.d); + tail_call_avoidance_fn(); } extern "C" { fn opaque_callee(arg: Franta, intarg: i32); fn tst_use(arg: f32); fn clobber(); + // This exists so that post-https://reviews.llvm.org/D138741 LLVM doesn't + // tail-call away some of our assertions. + fn tail_call_avoidance_fn(); } #[no_mangle] @@ -62,4 +66,5 @@ pub unsafe extern "C" fn caller() { // CHECK: call opaque_callee // CHECK: mov 3, %o2 opaque_callee(Franta { a: 1.0, b: 2.0, c: 3.0, d: 4.0 }, 3); + tail_call_avoidance_fn(); } |
