[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#973414: rustc: produces non-baseline opcodes for compiler_builtins::int::udiv::__udivmoddi4 on i386



Package: rustc
Followup-For: Bug #973414
X-Debbugs-Cc: debian-toolchain@lists.debian.org, martin-eric.racine@iki.fi, fierelier@gmail.com
Control: severity -1 serious
Control: tags -1 patch

A caution: there's a good chance I'm wasting everyone's time with this patch
and much of the preceding commentary about it.

However, I'd feel more comfortable raising this commotion about it and then
being talked down reasonably than I would if I didn't attempt to apply what I
feel is a fix.

Worth noting: it could still be an incorrect fix; this area is somewhat beyond
my expertise.  That's a reasonable reason to reject it too, because I don't
think anyone would want it to be applied and cause long-term problems.

Anyhow: Dear Maintainer, please find attached a patch that may address this
issue that I feel may be release critical for bookworm, per Debian's
architecture policy guidelines.
Description: match rustc i686 specification to Debian 9 i386 baseline
 Since Debian 9 (stretch), the baseline architecture specification for
 i386 package has been the i686 (Pentium P6), with neither MMX nor SSE
 instruction set extensions.
 .
 This is a lower baseline than the Pentium 4 default in Rust 1.63,
 and also lower than the Pentium Pro default previously specified in
 Debian's packaging for that version.
 .
 Upstream's definition of i686 appears to have converged on a
 different meaning, so this patch doesn't currently seem to be worth
 offering upstream (author's opinion here).
 .
 There are some downsides to this patch; performance of the Rust
 tooling and code built with it on Debian i386 will be suboptimal
 when using the defaults.  Again, author's opinion: I think it's
 worthwhile so that Debian is viable on baseline hardware.
 .
 Ref: https://wiki.debian.org/ArchitectureSpecificsMemo#i386-1
Author: James Addison <jay@jp-hosting.net>
Last-Update: Wed 29 Mar 18:24:38 BST 2023
Bug: https://bugs.debian.org/973414
Forwarded: not-needed
X-Not-Forwarded-Because: upstream consensus on i686 differs

---

--- rustc-1.63.0+dfsg1.orig/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs
+++ rustc-1.63.0+dfsg1/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs
@@ -2,7 +2,7 @@ use crate::spec::{LinkerFlavor, StackPro
 
 pub fn target() -> Target {
     let mut base = super::linux_gnu_base::opts();
-    base.cpu = "pentium4".into();
+    base.cpu = "i686".into();
     base.max_atomic_width = Some(64);
     base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m32".into());
     // don't use probe-stack=inline-asm until rust#83139 and rust#84667 are resolved

Reply to: