diff options
| author | Taiki Endo <te316e89@gmail.com> | 2024-11-26 03:10:22 +0900 |
|---|---|---|
| committer | Taiki Endo <te316e89@gmail.com> | 2024-11-26 03:10:22 +0900 |
| commit | e5bc7e38c3c9d75a993435e4dfdcc15644e2262b (patch) | |
| tree | fb72b862bffc9e7953db3dc9f8a9abf678733cc2 /src | |
| parent | e73d32190b596325c51223e9d5b519eb63eaa8b7 (diff) | |
| download | rust-e5bc7e38c3c9d75a993435e4dfdcc15644e2262b.tar.gz rust-e5bc7e38c3c9d75a993435e4dfdcc15644e2262b.zip | |
Fix handling of x18 in AArch64 inline assembly on ohos/trusty or with -Zfixed-x18
Diffstat (limited to 'src')
| -rw-r--r-- | src/inline_asm.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/inline_asm.rs b/src/inline_asm.rs index 7bc500b1814..d74c366a87f 100644 --- a/src/inline_asm.rs +++ b/src/inline_asm.rs @@ -476,9 +476,14 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> { let mut new_slot = |x| new_slot_fn(&mut slot_size, x); // Allocate stack slots for saving clobbered registers - let abi_clobber = InlineAsmClobberAbi::parse(self.arch, &self.tcx.sess.target, sym::C) - .unwrap() - .clobbered_regs(); + let abi_clobber = InlineAsmClobberAbi::parse( + self.arch, + &self.tcx.sess.target, + &self.tcx.sess.unstable_target_features, + sym::C, + ) + .unwrap() + .clobbered_regs(); for (i, reg) in self.registers.iter().enumerate().filter_map(|(i, r)| r.map(|r| (i, r))) { let mut need_save = true; // If the register overlaps with a register clobbered by function call, then |
