[all-commits] [llvm/llvm-project] d21ce4: [Statepoints] Operand folding in presense of tied ...

dantrushin via All-commits all-commits at lists.llvm.org
Wed Aug 5 06:19:22 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: d21ce408218150e23b5cc4af45c088c0926d7e18
      https://github.com/llvm/llvm-project/commit/d21ce408218150e23b5cc4af45c088c0926d7e18
  Author: Denis Antrushin <dantrushin at gmail.com>
  Date:   2020-08-05 (Wed, 05 Aug 2020)

  Changed paths:
    M llvm/lib/CodeGen/InlineSpiller.cpp
    M llvm/lib/CodeGen/TargetInstrInfo.cpp
    A llvm/test/CodeGen/X86/statepoint-vreg-folding.mir

  Log Message:
  -----------
  [Statepoints] Operand folding in presense of tied registers.

Implement proper folding of statepoint meta operands (deopt and GC)
when statepoint uses tied registers.
For deopt operands it is just about properly preserving tiedness
in new instruction.
For tied GC operands folding is a little bit more tricky.
We can fold tied GC operands only from InlineSpiller, because it knows
how to properly reload tied def after it was turned into memory operand.
Other users (e.g. peephole) cannot properly fold such operands as they
do not know how (or when) to reload them from memory.
We do this by un-tieing operand we want to fold in InlineSpiller
and allowing to fold only untied operands in foldPatchpoint.




More information about the All-commits mailing list