Revert "Fix llvm register allocator for native/cross build differences"

In preparation for applying the fix that landed upstream, this reverts
commit 397c2693fa:

  Fix llvm register allocator for native/cross build differences

  Work around an issue in LLVM's register allocator, which can cause
  slightly different i386 object files, when produced by a native or cross
  build of clang.

  This adds another volatile qualifier to a float variable declaration in
  the weightCalcHelper() function, which otherwise produces slightly
  different float results on amd64 and i386 hosts. In turn, this can lead
  to different (but equivalent) register choices, and thus non-identical
  assembly code.

  See https://github.com/llvm/llvm-project/issues/99396 for more details.

  Note this is a temporary fix, meant to merge in time for 13.4. As soon
  as upstream has a permanent solution we will import that.

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

(cherry picked from commit 52552d7572)
This commit is contained in:
Dimitry Andric 2024-07-28 13:08:50 +02:00
parent bed96ef09d
commit 5115838663

View file

@ -256,12 +256,7 @@ float VirtRegAuxInfo::weightCalcHelper(LiveInterval &LI, SlotIndex *Start,
return -1.0f;
}
// FreeBSD customization: similar to the HWeight declaration below, add a
// volatile qualifier to avoid slightly different weight results on amd64
// and i386 hosts, and possibly choosing different registers in the register
// allocator. See <https://github.com/llvm/llvm-project/issues/99396> for
// more details.
volatile float Weight = 1.0f;
float Weight = 1.0f;
if (IsSpillable) {
// Get loop info for mi.
if (MI->getParent() != MBB) {