-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
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
- Continuous differential testing: CI pipeline comparing output against LLVM #81 — Continuous differential testing: CI pipeline comparing output against LLVM
- Fuzz testing: integrate CSmith and LLVM-Stress to find parser/optimizer crashes #82 — Fuzz testing: integrate CSmith and LLVM-Stress to find parser/optimizer crashes
- Formal verification of Mem2Reg pass using Alive2 #83 — Formal verification of Mem2Reg pass using Alive2
Deep Optimization Pipeline
- Optimization presets: implement -O0, -O1, -O2, -O3 pass pipelines #84 — Optimization presets: implement -O0, -O1, -O2, -O3 pass pipelines
- Advanced middle-end passes: GVN, loop unrolling, and function inlining improvements #85 — Advanced middle-end passes: GVN, loop unrolling, and function inlining improvements
- SIMD auto-vectorization: emit SSE4/AVX2 instructions from vector IR types #86 — SIMD auto-vectorization: emit SSE4/AVX2 instructions from vector IR types
- Inter-procedural analysis (IPA): whole-program optimization across function boundaries #87 — Inter-procedural analysis (IPA): whole-program optimization across function boundaries
Backend Maturity
- Graph-coloring register allocator to replace linear scan #88 — Graph-coloring register allocator to replace linear scan
- RISC-V backend (RV64GC): instruction selection, register allocation, ELF emission #89 — RISC-V backend (RV64GC): instruction selection, register allocation, ELF emission
Stability & Integration
- Rust stable compatibility: eliminate all nightly-only features #90 — Rust stable compatibility: eliminate all nightly-only features
- Full linker and debugger compatibility: validate ELF/Mach-O output against ld, lld, gdb, lldb #91 — Full linker and debugger compatibility: validate ELF/Mach-O output against ld, lld, gdb, lldb
- DWARF debug information: emit .debug_info, .debug_line, .debug_abbrev sections #92 — DWARF debug information: emit .debug_info, .debug_line, .debug_abbrev sections
Suggested implementation order (dependencies first):
- Rust stable compatibility: eliminate all nightly-only features #90 (stable Rust) — unblocks all contributors
- Continuous differential testing: CI pipeline comparing output against LLVM #81 (CI differential tests) — catches regressions during subsequent work
- Fuzz testing: integrate CSmith and LLVM-Stress to find parser/optimizer crashes #82 (fuzzing) — finds crashes before they ship
- 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
- 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)
- Graph-coloring register allocator to replace linear scan #88 (graph-coloring regalloc) — improves output quality of all backends
- RISC-V backend (RV64GC): instruction selection, register allocation, ELF emission #89 (RISC-V backend)
- 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
- Formal verification of Mem2Reg pass using Alive2 #83 (Alive2 verification) — ongoing, can run in parallel with any of the above
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels