[LLVMdev] IR Liveness Analysis?

Manuel Jacob me at manueljacob.de
Wed Jul 16 15:55:42 PDT 2014


On 2014-07-16 23:51, Philip Reames wrote:
> Is anyone aware of an existing framework for asking liveness questions
> about SSA values in the IR?  I'm looking for something more precise
> than the trivial definition provided by SSA itself.  I can write
> something myself (and will if need be), but it seemed like a generic
> enough problem that I was surprised I couldn't find something already
> in tree.  Anyone know of something I've missed?
> 
> The problem I'm trying to solve is identifying pointers which might be
> live at a garbage collection safepoint.  This in the context of
> transforming the IR to insert a statepoint intrinsic to explicitly
> represent a possible object relocation.  We've been using a very
> straigh forward and, due to implementation simplicity, expensive
> estimation based on simple reachability*.  This suffices for
> correctness, but is not ideal from a performance perspective.  (To put
> it mildly.)
> 
> * For those curious, you can find the current implement by searching
> for "isLiveAtSafepoint" in
> https://github.com/AzulSystems/llvm-late-safepoint-placement/blob/master/lib/Transforms/Scalar/SafepointPlacementPass.cpp.
> It's a trivial reachability algorithm with special cases for inbound
> values into a phi and uses that are encountered along paths which
> contain the original definition.  We rerun the search once per
> potentially live value.  As you might imagine, that's a bit expensive.
>  :)

For those that don't have the repository locally: the actual 
implementation lives in lib/Analysis/CFG.cpp (function 
isPotentiallyReachableNotViaDef) currently.

https://github.com/AzulSystems/llvm-late-safepoint-placement/blob/master/lib/Analysis/CFG.cpp#L306

> 
> Philip
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list