Priorities

Analysis Priorities

  1. Track correspondence between annotated variables and temps
  2. Context roots of derived static variables
  3. SSA for static variables
  4. Live-variable analysis
  5. Polyvariant division
  6. Use post-dominating edges to compute lazy points
  7. Extend reachability analysis to handle IGOTOs (switch statements)
  8. Interprocedural annotations
  9. Compute may defs and uses (calls, dereferences)
  10. Permit addresses of static variables to be taken
  11. Alias analysis
  12. Convert keepConst to makeStatic and support new policies

Priorities for Setup/Template Constructor

  1. Discordant merges, unrolling, dynamic branches => multiple units
  2. Multiple versions: statically generated callbacks to GEs
  3. Checked units: statically generated cache lookups
  4. Lazy specialization: emitted callbacks and cache lookups
  5. Unit linearization
  6. Laziness on edges between units, rather than per-unit
  7. Switch statements: copying IGOTOs (BTA and s/t merger also require noted changes to support static and dynamic switches, respectively)
  8. Single run-time predecessor optimizations
  9. Cluster unit boundaries
  10. Optimize unchecked units (e.g., statically copy code for replicate)
  11. Optimize work-list manipulation (single-successor optimizations)
  12. Reduce scheduling constraints within units
  13. Optimize callbacks to GEs
  14. Regions with multiple entries (and exits)
  15. Reduce redundancy in static-value cache
  16. Static estimates of code- and table-space requirements for each unit
  17. Optimize cache lookups, experiment with different hash functions, etc.
  18. Implement the cache(n) policy with instruction-cache invalidation, cache-replacement schemes, etc.

Priorities for the Setup/Template Merger

  1. Get a very simple path working (one unchecked dynamic-to-static promotion point, no nested regions, no laziness, no unrolling, no switch statements, no dynamic branches)
  2. Long-term interface with the compiler
  3. Ensure units are placed on cache-line boundaries
  4. Maintain issue alignment
  5. Patching of jump tables

Last updated April 10, 1997.
Brian Grant (grant@cs.washington.edu)