//! IR transformation passes.
//!
//! Before a `Program` is lowered to backend code, it runs through a series
//! of target-independent optimizations and transformations: call inlining,
//! common-subexpression elimination, dead-code elimination, and visitor
//! utilities. These passes are the vyre analogue of LLVM's mid-level IR
//! passes.
/// Call inlining transforms.
///
/// This pass expands `Expr::Call` nodes into the callee's IR body,
/// eliminating kernel-dispatch overhead for small compositional ops.
/// Compiler-oriented IR primitives.
/// Shared-nothing parallel dispatch analysis.
/// IR visitor utilities.
///
/// Provides iterative traversal functions that walk nodes and expressions
/// without recursion, preventing stack overflow on deeply nested programs.
/// Reverse-mode automatic differentiation via IR transform (RFC 0002).
///
/// Given a forward `Program` + output/input buffer names, emits a backward
/// `Program` computing gradients via the chain rule.