mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 13:33:37 +02:00
0ac606967a
Currently we consider that each constant has itself as a base value. I.e "base(const) = const". This introduces couple of problems when we are trying to avoid reporting constants in statepoint live sets: 1. When querying "base( phi(const1, const2) )" we will get "phi(const1, const2)" as a base pointer. Since it's not a constant we will record it in a stack map. However on practice we don't want this to happen (constant are never relocated). 2. base( phi(const, gc ptr) ) = phi( const, base(gc ptr) ). This particular case imposes challenge on our runtime - we don't expect to see constant base pointers other than null. This problems can be avoided by treating all constant as if they were derived from null pointer base. I.e in a first case we will not include constant pointer in a stack map at all. In a second case we will get "phi(null, base(gc ptr))" as a base pointer which is a lot more convenient. Differential Revision: http://reviews.llvm.org/D20584 llvm-svn: 270993 |
||
---|---|---|
.. | ||
base-pointers-1.ll | ||
base-pointers-2.ll | ||
base-pointers-3.ll | ||
base-pointers-4.ll | ||
base-pointers-5.ll | ||
base-pointers-6.ll | ||
base-pointers-7.ll | ||
base-pointers-8.ll | ||
base-pointers-9.ll | ||
base-pointers-10.ll | ||
base-pointers-11.ll | ||
base-pointers-12.ll | ||
base-pointers-13.ll | ||
base-pointers.ll | ||
base-vector.ll | ||
basic.ll | ||
basics.ll | ||
call-gc-result.ll | ||
codegen-cond.ll | ||
constants.ll | ||
deopt-intrinsic-cconv.ll | ||
deopt-intrinsic.ll | ||
deref-pointers.ll | ||
gc-relocate-creation.ll | ||
invokes.ll | ||
leaf-function.ll | ||
live-vector-nosplit.ll | ||
liveness-basics.ll | ||
patchable-statepoints.ll | ||
preprocess.ll | ||
relocate-invoke-result.ll | ||
relocation.ll | ||
rematerialize-derived-pointers.ll | ||
rewrite-invoke.ll | ||
statepoint-calling-conventions.ll | ||
statepoint-coreclr.ll | ||
statepoint-format.ll | ||
two-invokes-one-landingpad.ll |