]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Merge r353031 from stable/12:
authorDimitry Andric <dim@FreeBSD.org>
Thu, 3 Oct 2019 16:22:56 +0000 (16:22 +0000)
committerDimitry Andric <dim@FreeBSD.org>
Thu, 3 Oct 2019 16:22:56 +0000 (16:22 +0000)
commit819207bec3b77be2d78f7ab21e44ac7b7b355cbf
treeab7df23cbd2a013e995b0fbfa1941f18095da913
parent0225849177f6da31122bc3e7a4a797f454d40898
Merge r353031 from stable/12:

Pull in r357528 from upstream llvm trunk (by Craig Topper):

  [X86] Check MI.isConvertibleTo3Addr() before calling
  convertToThreeAddress in X86FixupLEAs.

  X86FixupLEAs just assumes convertToThreeAddress will return nullptr
  for any instruction that isn't convertible.

  But the code in convertToThreeAddress for X86 assumes that any
  instruction coming in has at least 2 operands and that the second one
  is a register. But those properties aren't guaranteed of all
  instructions. We should check the instruction property first.

Pull in r365720 from upstream llvm trunk (by Craig Topper):

  [X86] Don't convert 8 or 16 bit ADDs to LEAs on Atom in FixupLEAPass.

  We use the functions that convert to three address to do the
  conversion, but changing an 8 or 16 bit will cause it to create a
  virtual register. This can't be done after register allocation where
  this pass runs.

  I've switched the pass completely to a white list of instructions
  that can be converted to LEA instead of a blacklist that was
  incorrect. This will avoid surprises if we enhance the three address
  conversion function to include additional instructions in the future.

  Fixes PR42565.

This should fix assertions/segfaults when compiling certain ports with
CPUTYPE=atom.

Approved by: re (kib)
PR: 240928
contrib/llvm/lib/Target/X86/X86FixupLEAs.cpp