llvm/test/Transforms/RewriteStatepointsForGC
Philip Reames b04fde3708 [RewriteStatepointsForGC] Extend base pointer inference to handle insertelement
This change is simply enhancing the existing inference algorithm to handle insertelement instructions by conservatively inserting a new instruction to propagate the vector of associated base pointers. In the process, I'm ripping out the peephole optimizations which mostly helped cover the fact this hadn't been done.

Note that most of the newly inserted nodes will be nearly immediately removed by the post insertion optimization pass introduced in 246718. Arguably, we should be trying harder to avoid the malloc traffic here, but I'd rather get the code correct, then worry about compile time.

Unlike previous extensions of the algorithm to handle more case, I discovered the existing code was causing miscompiles in some cases. In particular, we had an implicit assumption that the peephole covered *all* insert element instructions, so if we had a value directly based on a insert element the peephole didn't cover, we proceeded as if it were a base anyways. Not good. I believe we had the same issue with shufflevector which is why I adjusted the predicate for them as well.

Differential Revision: http://reviews.llvm.org/D12583



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247210 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-09 23:40:12 +00:00
..
base-pointers-1.ll [RewriteStatepointsForGC] Adjust naming scheme to be more stable 2015-07-24 19:01:39 +00:00
base-pointers-2.ll [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
base-pointers-3.ll [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
base-pointers-4.ll [RewriteStatepointsForGC] Reduce the number of new instructions for base pointers 2015-08-27 01:02:28 +00:00
base-pointers-5.ll [RewriteStatepointsForGC] Adjust naming scheme to be more stable 2015-07-24 19:01:39 +00:00
base-pointers-6.ll [RewriteStatepointsForGC] Adjust naming scheme to be more stable 2015-07-24 19:01:39 +00:00
base-pointers-7.ll [RewriteStatepointsForGC] Adjust naming scheme to be more stable 2015-07-24 19:01:39 +00:00
base-pointers-8.ll [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
base-pointers-9.ll [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
base-pointers-10.ll [RewriteStatepointsForGC] Adjust naming scheme to be more stable 2015-07-24 19:01:39 +00:00
base-pointers-11.ll [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
base-pointers.ll [RewriteStatepointsForGC] Improve debug output [NFC] 2015-09-02 21:11:44 +00:00
base-vector.ll [RewriteStatepointsForGC] Extend base pointer inference to handle insertelement 2015-09-09 23:40:12 +00:00
basics.ll [RewriteStatepointsForGC] For some values (like gep's and bitcasts) it's cheaper to clone them after statepoint than to emit proper relocates for them. This change implements this logic. There is alredy similar optimization in CodeGenPrepare, but doing so during RewriteStatepointsForGC allows to capture more opprtunities such as relocates in loops and longer instruction chains. 2015-05-19 15:59:05 +00:00
codegen-cond.ll Fix CHECK directives that weren't checking. 2015-08-31 21:10:35 +00:00
constants.ll [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
deref-pointers.ll [RewriteStatepointsForGC] Strip deref info after rewriting. 2015-06-02 22:33:37 +00:00
gc_relocate_creation.ll [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
live-vector.ll [RewriteStatepointsForGC] Reduce the number of new instructions for base pointers 2015-08-27 01:02:28 +00:00
liveness-basics.ll [RewriteStatepointsForGC] For some values (like gep's and bitcasts) it's cheaper to clone them after statepoint than to emit proper relocates for them. This change implements this logic. There is alredy similar optimization in CodeGenPrepare, but doing so during RewriteStatepointsForGC allows to capture more opprtunities such as relocates in loops and longer instruction chains. 2015-05-19 15:59:05 +00:00
preprocess.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
relocate_invoke_result.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
relocation.ll Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
rematerialize-derived-pointers.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00