]> git.lizzy.rs Git - rust.git/commitdiff
sparc-struct-abi: work around new tail-call optimization
authorAugie Fackler <augie@google.com>
Mon, 28 Nov 2022 21:42:48 +0000 (16:42 -0500)
committerAugie Fackler <augie@google.com>
Mon, 28 Nov 2022 21:42:48 +0000 (16:42 -0500)
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.

src/test/assembly/sparc-struct-abi.rs

index 6a898b2974a65f40fb3eba2dc11cc205c457a5fe..6309dd420ffa4d5c8c42915fdbfd6a9e86b43924 100644 (file)
@@ -44,12 +44,16 @@ pub struct 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 struct Franta {
     // 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();
 }