Skip to content

parallel: --emit=mir not reproducible (alloc ids) #154278

@matthiaskrgr

Description

@matthiaskrgr

I tried this code:

pub struct A<T> { pub v: T }
pub struct B<T> { pub v: T }

pub mod test {
    pub struct A<T> { pub v: T }

    impl<T> A<T> {
        pub fn foo(&self) -> isize {
            static a: isize = 5;
            return a
        }

        pub fn bar(&self) -> isize {
            static a: isize = 6;
            return a;
        }
    }
}

rustc inner_static.rs --emit=mir --crate-type lib -o out -Zthreads=60 ; md5sum out

I expected to see this happen: explanation
equal md5s

Instead, this happened: explanation
different md5s

ba0be6d56e74c5a05f5b5964a2a9ca3c
fcc907ca72b311ae42bd6fe7d3a0ad91
--- 1	2026-03-23 22:42:02.040187880 +0100
+++ 2	2026-03-23 22:41:53.408130384 +0100
@@ -7,13 +7,13 @@
     let mut _2: &isize;

     bb0: {
-        _2 = const {alloc2: &isize};
+        _2 = const {alloc1: &isize};
         _0 = copy (*_2);
         return;
     }
 }

-alloc2 (static: test::A::<T>::foo::a, size: 8, align: 8) {
+alloc1 (static: test::A::<T>::foo::a, size: 8, align: 8) {
     05 00 00 00 00 00 00 00                         │ ........
 }

@@ -32,13 +32,13 @@
     let mut _2: &isize;

     bb0: {
-        _2 = const {alloc1: &isize};
+        _2 = const {alloc2: &isize};
         _0 = copy (*_2);
         return;
     }
 }

-alloc1 (static: test::A::<T>::bar::a, size: 8, align: 8) {
+alloc2 (static: test::A::<T>::bar::a, size: 8, align: 8) {
     06 00 00 00 00 00 00 00                         │ ........
 }

Meta

rustc --version --verbose:

rustc 1.96.0-nightly (562dee482 2026-03-21)
binary: rustc
commit-hash: 562dee4820c458d823175268e41601d4c060588a
commit-date: 2026-03-21
host: x86_64-unknown-linux-gnu
release: 1.96.0-nightly
LLVM version: 22.1.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlA-parallel-compilerArea: parallel compilerA-reproducibilityArea: Reproducible / deterministic buildsC-bugCategory: This is a bug.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions