llvm-6502/test/Transforms/RewriteStatepointsForGC
Philip Reames 6865b977ae [RewriteStatepointsForGC] Extend base pointer to handle more cases w/vectors
When relocating a pointer, we need to determine a base pointer for the derived pointer being relocated. We have limited support for handling a pointer extracted from a vector; the current code only handled the case where the entire vector was known to contain base pointers. This patch extends the reasoning to handle chains of insertelements where the indices are constants. This case turns out to be fairly common in vectorized code. We can now handle vectors which contains mixtures of base and derived pointers provided the insertelements use constant indices.

Note that this doesn't solve the general problem. To handle variable indexed insertelements, we'd need to scalarize and introduce conditional branching based on the index. Alternatively, we could eagerly scalarize, but the code structure doesn't currently make either fix easy. The patch also doesn't handle shufflevector or other vector manipulation for much the same reasons. I plan to defer this work until I have a motivating test case.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237200 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-12 22:19:52 +00:00
..
base-pointers-1.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-2.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-3.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-4.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-5.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-6.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-7.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-8.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-9.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-10.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
base-pointers-11.ll [RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers 2015-05-11 18:49:34 +00:00
base-pointers.ll [RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers 2015-05-11 18:49:34 +00:00
basics.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
constants.ll Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
gc_relocate_creation.ll [RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers 2015-05-11 18:49:34 +00:00
live-vector.ll [RewriteStatepointsForGC] Extend base pointer to handle more cases w/vectors 2015-05-12 22:19:52 +00:00
liveness-basics.ll [RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers 2015-05-11 18:49:34 +00:00
preprocess.ll [RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers 2015-05-11 18:49:34 +00:00
relocate_invoke_result.ll [RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers 2015-05-11 18:49:34 +00:00
relocation.ll [RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers 2015-05-11 18:49:34 +00:00