agentleFS
rainoftimerainoftime/pl-skills/liveness-analysis/SKILL.md

liveness-analysis

Skill17 starsChanged 9 months agoApache-2.0View on GitHub

Compute which variables are live at each program point for optimization and register allocation.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 6 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run in reverse order for efficiency

    line 43
  2. Distinctive:

    Use worklist algorithm for large functions

    line 44
  3. Distinctive:

    Consider SSA form for simpler analysis

    line 45
  4. Distinctive:

    Use for dead code detection

    line 47
  5. Distinctive:

    When memory is not constrained

    line 86
  6. Distinctive:

    Does not consider aliasing

    line 91

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Liveness Analysis

Liveness analysis determines which variables may be used in the future at each program point. It is a fundamental backward dataflow analysis used for register allocation, dead code elimination, and optimization.

When to Use This Skill

  • Register allocation
  • Dead code elimination
  • Optimizing compiler passes
  • Understanding program behavior
  • Building IDE features

What This Skill Does

  1. Live Variable Detection: Find variables that may be used later
  2. Backward Dataflow: Propagate information from uses to definitions
  3. Control Flow Handling: Merge information at join points
  4. Register Allocation: Map live ranges to registers
  5. Dead Code Detection: Find dead stores

Key Concepts

ConceptDescription
Live VariableVariable that may be used before being redefined
Live RangeInstructions where a variable is live
UseInstruction that reads a variable
DefinitionInstruction that writes a variable
Backward AnalysisInformation flows from uses to definitions

Tips

  • Run in reverse order for efficiency
  • Use worklist algorithm for large functions
  • Consider SSA form for simpler analysis
  • Combine with register allocation
  • Use for dead code detection

Common Use Cases

  • Register allocation
  • Dead code elimination
  • Live variable debugging
  • Memory optimization
  • SSA construction

Related Skills

  • dataflow-analysis-framework - General framework
  • register-allocator - Uses liveness info
  • dead-code-eliminator - Uses liveness to find dead code
  • ssa-constructor - Uses liveness for phi placement

Canonical References

ReferenceWhy It Matters
Aho et al., "Compilers: Principles, Techniques, and Tools", Ch. 9 (1986)Classic treatment
Muchnick, "Advanced Compiler Design and Implementation", Ch. 9 (1997)Detailed algorithms
Cytron et al., "Efficiently Computing Static Single Assignment Form" (TOPLAS 1991)SSA liveness

Tradeoffs and Limitations

Approach Tradeoffs

ApproachProsCons
Simple backwardEasy to implementO(n²) worst case
WorklistEfficientMore complex
SSA-basedSimpler livenessRequires SSA

When NOT to Use This Skill

  • Simple stack machines (no register allocation)
  • Interpreted languages with unlimited locals
  • When memory is not constrained

Limitations

  • Conservative (may overestimate liveness)
  • Does not consider aliasing
  • Path-sensitive liveness is expensive

Assessment Criteria

A high-quality implementation should have:

CriterionWhat to Look For
CorrectnessSound over-approximation
EfficiencyReasonable runtime
HandlingDeals with loops, branches
IntegrationWorks with CFG

Quality Indicators

✅ Good: Correct liveness, efficient algorithm, handles all control flow ⚠️ Warning: Slow on large functions, doesn't handle loops ❌ Bad: Incorrect results, misses live variables

Research Tools & Artifacts

Real-world liveness analysis tools:

ToolWhy It Matters
LLVMProduction liveness in LLVM
GCCGCC dataflow framework
SootJava bytecode analysis
MIRAIRust liveness analysis

Key Systems

  • LLVM: SSA-based liveness
  • Graal: Truffle liveness

Research Frontiers

Current liveness analysis research:

DirectionKey PapersChallenge
Precise liveness"Precise Liveness"Aliasing
Incremental"Incremental Liveness"Change impact
Parallel"Parallel Liveness"Multi-core

Hot Topics

  1. WASM liveness: Binary liveness
  2. ML liveness: Learning liveness

Implementation Pitfalls

Common liveness bugs:

PitfallReal ExamplePrevention
AliasingPointer aliasingConservative
MemoryLarge programsIncremental

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.