[PATCH] D23903: [WIP] Improve deopt spilling for arguments passed on the stack

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 25 19:28:41 PDT 2016


reames created this revision.
reames added reviewers: sanjoy, igor-laevsky.
reames added a subscriber: llvm-commits.
Herald added subscribers: mcrosier, sanjoy.

This patch is not likely to get committed in it's current form; I got most of the way done and discovered a better approach.

The idea behind this was that we are generating new spill slots for deopt values which are arguments that were passed on the stack.  This is unnecessary.  This patch extends the SelectionDAGBuilder logic around statepoints to handle specifically this case.  

This does help our existing lowering, but the main reason was to avoid a serious regression in an upcoming patch around live-in-deopt semantics.  However, I discovered right before posting this that the peepholeopt MI pass should be catching these cases and isn't.  The right fix is to implement the live in piece and then fix peepholeopt.

Worth noting is that this patch improves lowering for live-through deopt.  If it turns out live-on-return is harder than it looks, this might be a good backup position.  In particular, I'm trying to get both live-in and live-on-return implemented; I have a strategy for live-in that looks workable, but live-on-return is still questionable.  If I can't get live-on-return, I'll probably want to revisit this patch.  

https://reviews.llvm.org/D23903

Files:
  lib/CodeGen/SelectionDAG/StatepointLowering.cpp
  test/CodeGen/X86/statepoint-fixed-slots.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23903.69309.patch
Type: text/x-patch
Size: 7168 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160826/9baf7842/attachment.bin>


More information about the llvm-commits mailing list