[PATCH] D13372: [RewriteStatepointsForGC] Use "deopt" operand bundles

Sanjoy Das via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 5 17:23:18 PDT 2015


sanjoy updated this revision to Diff 36574.
sanjoy added a comment.

Add test cases and do what it takes to get them to pass:

- The tests were ported automatically, so there may be some skew in the `; CHECK` lines.  I'll audit them before checking in, but please comment if you find some obvious goof-up.
- This change fixes a bug in the earlier version of this change: if the return value of a function being wrapped in `gc.statepoint` is itself live over some safepoint, we cannot just RAUW / erase that function call because we may have a raw pointer to it in some `PartiallyConstructedSafepointRecord`.  This updated change fixes this issue by deferring the RAUW and erase from parent till after the live sets have been made explicit in the IR.

PS: while this update is not logically distinct from change it is
updating, I can separate out the update into a separate change if you
think that will make the review easier.


http://reviews.llvm.org/D13372

Files:
  include/llvm/IR/Statepoint.h
  lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-1.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-10.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-11.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-2.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-3.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-4.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-5.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-6.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-7.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-8.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers-9.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-pointers.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/base-vector.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/basic.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/basics.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/codegen-cond.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/constants.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/deref-pointers.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/gc-relocate-creation.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/live-vector.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/liveness-basics.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/preprocess.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/relocate-invoke-result.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/relocation.ll
  test/Transforms/RewriteStatepointsForGC/deopt-bundles/rematerialize-derived-pointers.ll
  test/Transforms/RewriteStatepointsForGC/relocation.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D13372.36574.patch
Type: text/x-patch
Size: 99451 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151006/5402eae7/attachment-0001.bin>


More information about the llvm-commits mailing list