[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