Dataflow Tools ============== This page documents the testing and comparison tools under ``tools/dataflow/``. They are primarily intended for validating and comparing Lotus dataflow engines over the same LLVM IR input. Overview -------- The current front-ends focus on intraprocedural or IFDS-style benchmark runs and emit machine-readable summaries that are easy to diff in tests. lotus-dfa --------- Differential-testing front-end that compares multiple engines on the same analysis problem. **Binary**: ``lotus-dfa`` **Source**: ``tools/dataflow/lotus-dfa-diff.cpp`` **Usage**: .. code-block:: bash ./build/bin/lotus-dfa --analysis=liveness input.bc ./build/bin/lotus-dfa --analysis=constant_prop --engine=all input.bc ./build/bin/lotus-dfa --analysis=reaching_defs --engine=ifds input.bc Important options: - ``--analysis=liveness|reaching_defs|uninitialized|constant_prop|available_exprs|reachable`` - ``--engine=elim|mono|ifds|all`` - ``--elim-method=state|adt-simple|adt-delayed`` - ``--out-dir=`` lotus-dfa-apa ------------- Standalone front-end for the elimination-based APA engine. **Binary**: ``lotus-dfa-apa`` **Source**: ``tools/dataflow/lotus-dfa-apa.cpp`` Supports the same ``--analysis`` space as ``lotus-dfa`` plus ``--elim-method`` for choosing the elimination solver variant. Profiling-oriented dumps are available with: - ``--dump-profile`` to emit CFG, solver, and path-expression summary metrics - ``--dump-exprs`` to additionally emit per-instruction path-expression stats and serialized expressions lotus-dfa-mono -------------- Standalone front-end for the Mono engine. **Binary**: ``lotus-dfa-mono`` **Source**: ``tools/dataflow/lotus-dfa-mono.cpp`` Supported analyses: - ``liveness`` - ``reachable`` - ``constant_prop`` - ``uninitialized`` lotus-dfa-ifds -------------- Standalone front-end for IFDS-based analyses. **Binary**: ``lotus-dfa-ifds`` **Source**: ``tools/dataflow/lotus-dfa-ifds.cpp`` Supported analyses: - ``reaching_defs`` - ``uninitialized`` See also -------- - See :doc:`../../dataflow/apa`, :doc:`../../dataflow/mono`, and :doc:`../../dataflow/ifds_ide` for the underlying engines.