summaryrefslogtreecommitdiff
path: root/dev-lang/rust/files/1.76.0-loong-code-model.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang/rust/files/1.76.0-loong-code-model.patch')
-rw-r--r--dev-lang/rust/files/1.76.0-loong-code-model.patch73
1 files changed, 0 insertions, 73 deletions
diff --git a/dev-lang/rust/files/1.76.0-loong-code-model.patch b/dev-lang/rust/files/1.76.0-loong-code-model.patch
deleted file mode 100644
index 02bfeca55b1d..000000000000
--- a/dev-lang/rust/files/1.76.0-loong-code-model.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-https://github.com/rust-lang/rust/pull/120661
-From: WANG Xuerui <xen0n@gentoo.org>
-Date: Mon, 5 Feb 2024 13:18:32 +0800
-Subject: [PATCH] target: default to the medium code model on LoongArch targets
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The Rust LoongArch targets have been using the default LLVM code model
-so far, which is "small" in LLVM-speak and "normal" in LoongArch-speak.
-As described in the "Code Model" section of LoongArch ELF psABI spec
-v20231219 [1], one can only make function calls as far as ±128MiB with
-the "normal" code model; this is insufficient for very large software
-containing Rust components that needs to be linked into the big text
-section, such as Chromium.
-
-Because:
-
-* we do not want to ask users to recompile std if they are to build
- such software,
-* objects compiled with larger code models can be linked with those
- with smaller code models without problems, and
-* the "medium" code model is comparable to the "small"/"normal" one
- performance-wise (same data access pattern; each function call
- becomes 2-insn long and indirect, but this may be relaxed back into
- the direct 1-insn form in a future LLVM version), but is able to
- perform function calls within ±128GiB,
-
-it is better to just switch the targets to the "medium" code model,
-which is also "medium" in LLVM-speak.
-
-[1]: https://github.com/loongson/la-abi-specs/blob/v2.30/laelf.adoc#code-models
---- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs
-+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs
-@@ -1,4 +1,4 @@
--use crate::spec::{base, Target, TargetOptions};
-+use crate::spec::{base, CodeModel, Target, TargetOptions};
-
- pub fn target() -> Target {
- Target {
-@@ -7,6 +7,7 @@ pub fn target() -> Target {
- data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".into(),
- arch: "loongarch64".into(),
- options: TargetOptions {
-+ code_model: Some(CodeModel::Medium),
- cpu: "generic".into(),
- features: "+f,+d".into(),
- llvm_abiname: "lp64d".into(),
---- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs
-+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs
-@@ -16,7 +16,7 @@ pub fn target() -> Target {
- max_atomic_width: Some(64),
- relocation_model: RelocModel::Static,
- panic_strategy: PanicStrategy::Abort,
-- code_model: Some(CodeModel::Small),
-+ code_model: Some(CodeModel::Medium),
- ..Default::default()
- },
- }
---- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs
-+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs
-@@ -17,7 +17,7 @@ pub fn target() -> Target {
- max_atomic_width: Some(64),
- relocation_model: RelocModel::Static,
- panic_strategy: PanicStrategy::Abort,
-- code_model: Some(CodeModel::Small),
-+ code_model: Some(CodeModel::Medium),
- ..Default::default()
- },
- }
---
-2.43.0
-