[PATCH] D87695: [Statepoints][ISEL] gc.relocate uniquification should be based on SDValue, not IR Value.

Denis Antrushin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 15 07:46:52 PDT 2020


dantrushin created this revision.
dantrushin added reviewers: reames, skatkov.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
dantrushin requested review of this revision.

When exporting statepoint results to virtual registers we try to avoid
generating exports for duplicated inputs. But we erroneously use
IR Value* to check if inputs are duplicated. Instead, we should use
SDValue, because even different IR values can get lowered to the same
SDValue.
I'm adding a (degenerate) test case which emphasizes importance of this
feature for invoke statepoints.
If we fail to export only unique values we will end up with something
like that:

  %0 = STATEPOINT
  %1 = COPY %0

landing_pad:

  <use of %1>

And when exceptional path is taken, %1 is left uninitialized (COPY is never
execute).


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D87695

Files:
  llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
  llvm/test/CodeGen/X86/statepoint-vreg-details.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D87695.291923.patch
Type: text/x-patch
Size: 10333 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200915/c2f4cc27/attachment.bin>


More information about the llvm-commits mailing list