Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

target: default to the medium code model on LoongArch targets #120661

Merged
merged 1 commit into from
Feb 5, 2024

Commits on Feb 5, 2024

  1. target: default to the medium code model on LoongArch targets

    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
    xen0n committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    35dad14 View commit details
    Browse the repository at this point in the history