The Road Not Taken: Exploring Alias Analysis Based Optimizations Missed by the Compiler
summary
Tool named Scout disambiguates two pointers at runtime with a single memory access by constraining allocation size and alignment via a segment-based allocator, reducing dynamic-check cost to O(1). Implemented in LLVM, it uses loop versioning plus static feedback to insert checks only where optimizations (vectorization, LICM, dead-store elimination) become possible. Evaluation on Polybench shows up to 51.11% speedup (max), SPEC2017 shows up to 0.89% with allocator CPU/memory overheads (SPEC geo means 1.05% CPU, 7.47% memory); same-array base cases and malloc-conversion overhead remain limitations.
AI-written summary · about
chapters (18)
- 0:00Alias analysis and compiler optimizations
- 1:28Compiler role in optimization
- 3:12Intraprocedural alias limits
- 5:23Precision vs scalability trade-offs
- 6:05Loop versioning and dynamic checks
- 8:39Dynamic alias disambiguation
- 9:24Our approach overview
- 10:06Loop versioning and feedback
- 12:56Custom memory allocation
- 15:25Tool integration
- 16:32Evaluation on benchmarks
- 18:59Optimization opportunities
- 19:43Overhead analysis
- 20:04Conclusion and future
- 20:25Q&A: Overlapping memory
- 21:54Q&A: Negative benchmarks
- 23:20Q&A: Performance and scalability
- 24:13Q&A: JIT applicability
related talks
20mRelaxing Alias Analysis: Exploring the Unexplored Space
18mRapid: Region-Based Pointer Disambiguation
37mDealing with aliasing using contracts
16mSemiring Optimizations: Dynamic Elision of Expressions with Identity and Absorbing Elements
19mExploiting Undefined Behavior in C/C++ Programs for Optimization: A Study on the(…)
17mRecent Developments in Optimizing Compilers for RISC-V
15mDuplo: A Framework for OCaml Post-Link Optimisation
22mReconciling High-level Optimizations and Low-level Code in LLVM
