[LLVMdev] IR Liveness Analysis?
Philip Reames
listmail at philipreames.com
Wed Jul 16 14:51:42 PDT 2014
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. :)
Philip
More information about the llvm-dev
mailing list