[StripGCRelocates] New pass to remove gc.relocates added by RS4GC
authorAnna Thomas <anna@azul.com>
Fri, 21 Oct 2016 18:43:16 +0000 (18:43 +0000)
committerAnna Thomas <anna@azul.com>
Fri, 21 Oct 2016 18:43:16 +0000 (18:43 +0000)
commit08602594344873fb9e80fb86c30c03a40f7c49a7
treec22c5c7d3b705df5d7ce5a57540cfb2eb6b3899a
parent1bd5f52e683e6342d5396dd91e002f80a41edb02
[StripGCRelocates] New pass to remove gc.relocates added by RS4GC

Summary:
Utility pass to remove gc.relocates created by rewrite statepoints for GC.
With respect to safepoint verification, the IR generated would be incorrect, and cannot run
as such.

This would be a single transformation on the final optimized IR.
The benefit of the pass is for easy analysis when the IRs are 'polluted' by too
many gc.relocates.
Added tests.

test run: All RS4GC tests with -verify option. Local downstream tests on large
IR files. This also works when the pointer being gc.relocated is another
gc.relocate.

Reviewers: sanjoy, reames

Subscribers: beanz, mgorny, llvm-commits

Differential Revision: https://reviews.llvm.org/D25096

llvm-svn: 284855
llvm/include/llvm/InitializePasses.h
llvm/include/llvm/Transforms/Scalar.h
llvm/lib/Transforms/Utils/CMakeLists.txt
llvm/lib/Transforms/Utils/StripGCRelocates.cpp [new file with mode: 0644]
llvm/lib/Transforms/Utils/Utils.cpp
llvm/test/Transforms/Util/strip-gc-relocates.ll [new file with mode: 0644]