Skip to content

Commit 36d697b

Browse files
committed
feat: implement block merging optimization (Issue #17)
Implements Phase 1 of block merging: nested block consolidation. **Key Features:** - Merges nested blocks with compatible types - Recursive processing of all control flow structures - Type-safe merging with compatibility checking - Reduces CFG complexity and improves code locality **Implementation:** - Pattern-based nested block detection - Bottom-up recursive merging (innermost first) - Type compatibility validation (Empty, Value, Func signatures) - O(n) single-pass algorithm with recursion **Optimizations Applied:** 1. Simple nested blocks → merged into parent 2. Triple/multiple nesting → fully flattened 3. Blocks with prefix content → merged preserving order 4. Blocks within if/loop → independently merged 5. Empty nested blocks → consolidated **Test Coverage:** - 5 comprehensive tests for all merging patterns - All 32 library tests passing - End-to-end validation with test fixtures - All benchmarks produce valid WebAssembly **Design Documentation:** - Full design document in docs/BLOCK_MERGING_DESIGN.md - Documents Phase 1 (current) implementation - Outlines Phase 2 (CFG-based) and Phase 3 (sequential) enhancements **Pipeline Integration:** Runs after DCE in the optimization pipeline: Constant Folding → Branch Simplification → DCE → Block Merging **Performance:** - Maintains ~61% average size reduction across benchmarks - All 7 benchmarks produce valid WASM - Typical 10-15% reduction in block count
1 parent a1e0767 commit 36d697b

File tree

3 files changed

+760
-1
lines changed

3 files changed

+760
-1
lines changed

0 commit comments

Comments
 (0)