Precedes
Compiler-Aware C/C++ Performance Engineering

An independent engineering project exploring static program analysis, compiler-guided optimization, and evidence-based performance validation.

Under active development
22
Detection Verified
38
Partial Checks
13
Not Implemented
0
Verified General Rewrites

Analytical Pipeline

The implemented static-analysis path processes a single translation unit through deterministic stages. The experimental optimization path extends this with native profiling, model-assisted candidate generation, and independent A/B measurement.

Source Code → Compilation Database → Clang AST / CFG → Semantic Analysis → Diagnostics → Independent Validation → Performance Measurement

Solid borders indicate implemented deterministic stages. Dashed borders indicate the experimental opt-in optimization path, which requires explicit trust configuration and is not part of the default static analysis.

What Precedes Actually Does

Precedes is a local command-line static C/C++ performance analyzer. It processes source code locally without uploading it, executing user binaries, or running build systems. The current implementation comprises over 130 Python modules, 49 rule implementations, and 6 native C++ helpers built against Clang/LLVM 21.

Clang AST-Based Recognition

Conservative source rules over Clang JSON ASTs identify loop structures, allocation patterns, vector-reserve opportunities, and STL usage patterns. Diagnostics use the PCPP-* namespace.

CFG and Control-Flow Reasoning

Bounded abstract interpretation over Clang 21 CFGs computes reaching values and loop-region invariance proofs. Budget-enforced traversal (20,000 steps, 250,000 cells) ensures termination on arbitrary inputs.

Interprocedural Effect Propagation

Source-visible may-effects of calls are computed over the resolved call graph. A reverse worklist reaches a finite fixed point including strongly connected components. Volatile, atomic, assembly, indirect-memory, and unresolved calls are tracked as explicit unknowns, never assumed pure.

Indirect-Call Resolution

Callee identity is resolved through declaration references, const pointer/reference bindings traced to initializers, member expressions, function-to-pointer decay, and bounded recursion through stable bindings. Virtual dispatch is tracked as explicit uncertainty.

C++ Lifetime Semantics

Native Clang LibTooling helpers extract constructor, destructor, temporary-object, and construction-failure cleanup paths from the CFG. Allocation/deallocation identity, exception handler regions, and subobject/base/virtual-base cleanup are tracked.

Loop Analysis

49 rules cover loop interchange, tiling, fission, scalar and sparse reductions (parallel, SIMD, offload, promotion), stride analysis, induction-variable proofs, pointer recurrence, iterator conditions, invariant-condition hoisting, and data-dependent conditions.

Native CLI

The standalone executable provides precedes check, precedes screening, and precedes doctor. Output is available as structured JSON or human-readable text. Exit code 0 means no actionable findings; exit code 1 means actionable findings were reported.

Data from repository revision 12c507e3f4136093139c8b004233b6001ed6963e, November 4, 2026. 73 applicable C/C++ Codee Open Catalog checks. These are detection-contract statuses, not percentages of proprietary Codee product capability. Precedes is an independent project, not affiliated with or endorsed by Codee.