Dynamic Compilation Group Meeting 10/23
Attendance: Susan, Craig, Wilson, Joel, Matthai, Brian, Scott
Issues
Platform Enhancements
- Optimization phase reordering (do some opts. first)
- CG inefficiencies
- scratch registers
- code motion above region
- predicated execution: disable or reenable?
- ATOM & Multiflow
- CSE of loads / don't reload RTconst
- static: eliminate redundant loads of float & pointer
constants at compile-time
- dynamic: CSE of loads of big ints at stitch time when the
sizes of integer RTconsts are known
- Fortran front end
- M3 front end
- Real annotations in C (and other front ends)
- Better switch/case statements
- Offset off SP?
- "Stack" code to register code (rename array positions to
registers)
- Interprocedural opts
- inlining
- statically known callee
- dynamically known callee
- memoization?
- recursion?
- Multiway loop unrolling
- Nested dynamic regions
- Static computation guarded by dynamic conditionals
- relates to nested dynamic regions
- if (dyn) then DR1 else DR2
- correctness issues with static code after dynamic branch
- problems
- setup code with side effects (e.g., div by zero)
- nonterminating code
- big loops to unroll
- staged setup code
- Semi-constants and recompiling - shortcuts on changing RTconsts
- relates to staged setup code
- relates to cacheing
Benchmarks
- *POV
- *Sort
- Robot (scottc)
- *Simple C Sparse
- Fortran Sparse (grant)
- *Xlisp
- MSQL
- *Dispatcher (mock)
- `C interpreter?
- Przemek's peephole opts.
* priorities
Studies
- Sizes of RTconsts?
- How many dynamically allocatable scratch registers are needed?