angr.utils.ssa.combined_uses_collector

Combined walker that collects VVar uses + Tmp uses in a single pass.

SPropagator’s _analyze historically called four separate helpers (get_vvar_deflocs, get_vvar_uselocs, get_tmp_deflocs, get_tmp_uselocs) against the same set of blocks. Each of the two _uselocs helpers spun up its own AILBlockViewer and walked every block independently.

Folding both use-collectors into a single walker halves the walk-the-block cost (one _handle_expr dispatch chain per visited node, not two) and is a drop-in replacement: the per-block tmp use extraction matches TmpUsesCollector’s shape and the cross-block vvar use accumulator matches VVarUsesCollector’s.

class angr.utils.ssa.combined_uses_collector.VVarAndTmpUsesCollector

Bases: AILBlockViewer

Collect VVar uses + Tmp uses in a single pass.

See VVarUsesCollector / TmpUsesCollector for the per-side semantics. This combined version inherits both:

  • vvar_and_uselocs accumulates across all blocks walked (consumer extracts when done).

  • tmp_and_uselocs is intended to be extracted per-block; reset_tmp_uses_only() clears just the tmp side without losing the cross-block vvar accumulator.

__init__()
Return type:

None

reset_tmp_uses_only()
Return type:

None