Files
oxc-guard 0389c4010e release(crates): oxc v0.146.0 (#25912)
### 🚀 Features

- 83cb516 minifier: Improve negation of expressions in boolean context (#25755) (Armano)

### 🐛 Bug Fixes

- 134fb22 isolated-declarations: Preserve unresolved parameter types (#25909) (Dunqing)
- 526c2b3 codegen: Remove deprecated test APIs (#25889) (camc314)
- 344a9b2 codegen: Align enum template sourcemaps (#25872) (camc314)

### ⚡ Performance

- 5ef0c93 minifier: Unwrap all unary exprs without creating dummy expressions (#25891) (Armano)
- 8783524 packages/codegen: Remove loop from `growMappingBuffer` (#25886) (overlookmotel)
- b6b14c0 packages/codegen: Remove redundant branch (#25885) (overlookmotel)
- be6adf0 packages/sourcemap: Make `location` passed to `recordSourceMapping` always a number (#25884) (overlookmotel)
- f720f15 packages/codegen: Take named-mapping only code off hot path in `recordSourceMapping` (#25883) (overlookmotel)
- a734af5 packages/codegen: Remove redundant setting of `last` in `printImportAttributes` and `printIf` (#25882) (overlookmotel)
- c6e44c6 packages/codegen: Combine 2 writes in `printJSXElement` (#25881) (overlookmotel)
- 8801662 packages/codegen: Remove redundant mapping from `printParams` (#25880) (overlookmotel)

### 📚 Documentation

- 5ad330e packages/codegen: Reformat comments (#25876) (overlookmotel)
2026-08-19 08:29:51 +00:00
..

Oxc CFG

Control Flow Graph construction and analysis for JavaScript and TypeScript.

Overview

This crate provides data structures and algorithms for building and analyzing Control Flow Graphs (CFGs) from AST nodes. CFGs are essential for advanced static analysis, optimization, and understanding program flow.

Key Features

  • CFG construction: Build control flow graphs from AST nodes
  • Block-based representation: Organizes code into basic blocks
  • Graph analysis: Traverse and analyze control flow patterns
  • DOT export: Visualize CFGs using Graphviz dot format
  • Visitor integration: Works with oxc visitor patterns

Architecture

Basic Blocks

The CFG organizes code into basic blocks - sequences of instructions with:

  • Single entry point (first instruction)
  • Single exit point (last instruction)
  • No internal branches or jumps

Graph Structure

  • Nodes: Basic blocks containing instructions
  • Edges: Control flow between blocks (conditional, unconditional, exception)
  • Entry/Exit: Special blocks for function entry and exit points

Analysis Applications

  • Dead code elimination: Find unreachable blocks
  • Data flow analysis: Track variable usage across control paths
  • Loop detection: Identify back edges and loop structures
  • Path analysis: Enumerate possible execution paths

The CFG integrates with semantic analysis to provide comprehensive program understanding.