[PATCH] D101150: [GreedyRA] Add support for invoke statepoint with tied-defs.

Serguei Katkov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 23 03:11:21 PDT 2021


skatkov created this revision.
skatkov added reviewers: reames, MatzeB, rnk, wmi, qcolombet, void.
Herald added subscribers: pengfei, jfb, hiraditya.
skatkov requested review of this revision.
Herald added a project: LLVM.

statepoint instruction uses tied-def registers to represent live gc value which
is use and def at the same time on a call.
At the same time invoke statepoint instruction is a last split point which can throw and
jump to landing pad.
As a result we have instructon which is last split point with tied-defs registers and
we need to teach Greedy RA to work with it.

The option -use-registers-for-gc-values-in-landing-pad controls whether statepoint lowering
will generate tied-defs for invoke statepoint and is off by default now.

To simplify the review I split this patch into parts and upload them separately:
https://reviews.llvm.org/D100747
https://reviews.llvm.org/D100748
https://reviews.llvm.org/D100750
https://reviews.llvm.org/D100927
https://reviews.llvm.org/D100945
https://reviews.llvm.org/D101028
The intention is to pass a review for each individual patch, update this one according to reviews,
re-test the result in downstream carefully again and then land it.
Say, in a two weeks to switch an option by default on.


https://reviews.llvm.org/D101150

Files:
  llvm/lib/CodeGen/InlineSpiller.cpp
  llvm/lib/CodeGen/SplitKit.cpp
  llvm/lib/CodeGen/SplitKit.h
  llvm/test/CodeGen/X86/statepoint-invoke-ra-hoist-copies.mir
  llvm/test/CodeGen/X86/statepoint-invoke-ra-inline-spiller.mir
  llvm/test/CodeGen/X86/statepoint-invoke-ra-remove-back-copies.mir
  llvm/test/CodeGen/X86/statepoint-invoke-ra1.ll
  llvm/test/CodeGen/X86/statepoint-invoke-ra2.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101150.339959.patch
Type: text/x-patch
Size: 151717 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210423/b1528de1/attachment-0001.bin>


More information about the llvm-commits mailing list