B2R2


B2R2.MiddleEnd.DataFlow Namespace

Type/Module Description

BackwardDataFlowHelper

ConstantPropagation<'L>

The constant propagation framework, which is a modified version of sparse conditional constant propagation of Wegman et al.

CPState

CPState<'L>

Constant propagation analysis state.

DataFlowAnalysis<'L, 'V>

Data-flow analysis framework. 'L is a lattice, 'V is a vertex data type of a graph.

DataFlowChain (Module)

DataFlowChain (Type)

DataFlowDirection

Either forward or backward analysis.

DataFlowHelper

IConstantPropagationCore<'L>

The core interface of a Constant Propagation (CP) algorithm.

LowUIRReachingDefinitions

Reaching definition analysis with a LowUIR-based CFG.

ReachingDefinitions<'Expr, 'BBL>

SCPTransfer

SCPValue (Module)

SCPValue (Type)

Thunk and Pointer are the only special kind of SCPValue, which should not be invalidated across function calls. This is to correctly track GOT pointers.

SparseConstantPropagation

The most basic constant propagation algorithm, which can track stack-based memory objects and GOT pointers. The reader is to enable reading data from external sections, e.g., rodata. If the reader is not given, we simply ignore such global data.

SPTransfer

SPValue (Module)

SPValue (Type)

StackPointerPropagation values.

SSAMemID

An ID of an SSA memory instance.

StackPointerPropagation

This is a variant of the SparseConstantPropagation, which only tracks the stack pointer used in a function. We initiate the stack pointer with a constant first, and check how it propagates within the function. StackPointerPropagation is generally much faster than SparseConstantPropagation due to its simplicity.

TopologicalDataFlowAnalysis<'L, 'V>

Classic data-flow analysis with topological worklist algorithm.

UntouchedTag

UntouchedValuePropagation

This is a variant of the SparseConstantPropagation, which computes which registers or memory cells are not re-defined (i.e., are untouched) within a function. This algorithm assumes that the SSA has been promoted.

Utils

UVTransfer

UVValue (Module)

UVValue (Type)

Untouched value propagation value.

VarExpr

Defined variable.

VarPoint<'E>

Program point of a defined variable.