Note [Unique Determinism and code generation]
The goal of the deterministic builds (wiki/deterministic-builds, #4012) is to get ABI compatible binaries given the same inputs and environment. The motivation behind that is that if the ABI doesn't change the binaries can be safely reused. Besides ABI/interface determinism, we also guarantee bit-for-bit identical binaries (when -fobject-determinism is given), also known as object determinism (#12935) To achieve this, we must take care to non-determinism in the code generation, and, in particular, guarantee that the existing uniques are renamed deterministically and new ones are produced deterministically too. The overview of object determinism is given by Note [Object determinism]. References to this note identify code where the unique determinism may impact object determinism more specifically.
References 1
- Object determinism GHC.StgToCmm
Referenced by 60
- GHC.Data.Graph.Ops call site ×9
- GHC.CmmToAsm.Reg.Liveness call site ×7
- GHC.CmmToAsm.Reg.Linear call site ×5
- GHC.CmmToAsm.Reg.Graph.SpillCost call site ×4
- GHC.Data.Graph.Ppr call site ×4
- GHC.Cmm.LayoutStack call site ×3
- GHC.CmmToAsm.Reg.Graph call site ×3
- GHC.CmmToAsm.Reg.Graph.Base call site ×3
- GHC.CmmToAsm.Reg.Linear.JoinToTargets call site ×3
- GHC.CmmToAsm.Format call site ×2
- GHC.CmmToAsm.Reg.Graph.Spill call site ×2
- GHC.CmmToAsm.Reg.Graph.SpillClean call site ×2
- GHC.CmmToAsm.Reg.Graph.Stats call site ×2
- GHC.Data.Graph.Color call site ×2
- GHC.Cmm.CLabel call site
- GHC.Cmm.CommonBlockElim call site
- GHC.Cmm.Node call site
- GHC.Cmm.Reg call site
- GHC.CmmToAsm call site
- GHC.CmmToAsm.Reg.Graph.TrivColorable call site
- GHC.CmmToAsm.Reg.Linear.Stats call site
- GHC.CmmToLlvm.Base call site
- GHC.Platform.Reg call site