HomeFreeBSD

Merge commit c80c09f3e380 from llvm-project (by Dimitry Andric):

Description

Merge commit c80c09f3e380 from llvm-project (by Dimitry Andric):

[CalcSpillWeights] Avoid x87 excess precision influencing weight result

Fixes #99396

The result of `VirtRegAuxInfo::weightCalcHelper` can be influenced by
x87 excess precision, which can result in slightly different register
choices when the compiler is hosted on x86_64 or i386. This leads to
different object file output when cross-compiling to i386, or native.

Similar to 7af3432e22b0, we need to add a `volatile` qualifier to the
local `Weight` variable to force it onto the stack, and avoid the excess
precision. Define `stack_float_t` in `MathExtras.h` for this purpose,
and use it.

This is the version of the fix for PR276961 that landed upstream.

PR: 276961
Reported by: cperciva
MFC after: 3 days

(cherry picked from commit 1a4b8325f6e3a45c77188343da504fe04495cc46)

Details

Provenance
dimAuthored on Jul 28 2024, 11:13 AM
Parents
rG511583866352: Revert "Fix llvm register allocator for native/cross build differences"
Branches
Unknown
Tags
Unknown