Skip to content

Production readiness roadmap #93

@yudongusa

Description

@yudongusa

Tracking issue for all work required to make LLVM-in-Rust production-ready. The project currently has a complete compiler pipeline (IR → passes → x86-64/AArch64 → ELF/Mach-O, 213 tests passing), but several categories of work remain before it can be used in production compilers or critical tooling.

Correctness & Testing

Deep Optimization Pipeline

Backend Maturity

Stability & Integration


Suggested implementation order (dependencies first):

  1. Rust stable compatibility: eliminate all nightly-only features #90 (stable Rust) — unblocks all contributors
  2. Continuous differential testing: CI pipeline comparing output against LLVM #81 (CI differential tests) — catches regressions during subsequent work
  3. Fuzz testing: integrate CSmith and LLVM-Stress to find parser/optimizer crashes #82 (fuzzing) — finds crashes before they ship
  4. Optimization presets: implement -O0, -O1, -O2, -O3 pass pipelines #84 (opt presets) — needed before Advanced middle-end passes: GVN, loop unrolling, and function inlining improvements #85/SIMD auto-vectorization: emit SSE4/AVX2 instructions from vector IR types #86/Inter-procedural analysis (IPA): whole-program optimization across function boundaries #87 can be integrated
  5. Advanced middle-end passes: GVN, loop unrolling, and function inlining improvements #85 (GVN + unrolling) → SIMD auto-vectorization: emit SSE4/AVX2 instructions from vector IR types #86 (vectorization) → Inter-procedural analysis (IPA): whole-program optimization across function boundaries #87 (IPA)
  6. Graph-coloring register allocator to replace linear scan #88 (graph-coloring regalloc) — improves output quality of all backends
  7. RISC-V backend (RV64GC): instruction selection, register allocation, ELF emission #89 (RISC-V backend)
  8. Full linker and debugger compatibility: validate ELF/Mach-O output against ld, lld, gdb, lldb #91 (linker compat) → DWARF debug information: emit .debug_info, .debug_line, .debug_abbrev sections #92 (DWARF) — final polish for end-user toolchain integration
  9. Formal verification of Mem2Reg pass using Alive2 #83 (Alive2 verification) — ongoing, can run in parallel with any of the above

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions