After finishing the basic TigerCompiler, extend it with at least one optimization component. Which optimization in which stage of compilation you implement is up to you. Here are some ideas, but other optimizations are also possible

Transformations on Tiger Abstract Syntax

The TigerOptimize component can be filled with many kinds of optimizations.

  • Constant and copy propagation (requires canonicalization)
  • Dead code elimination
  • Allocate non-escaping records and arrays on the stack
  • Make static links explicit (LambdaLifting?)
  • Partial evaluation / specialization
  • Make memory explicit (introduce MEM operator in Tiger)

Improvements of TAS2IR

  • Improve stack allocation of escaping variables and spilled local variables (overlap variables that are not live at the same time)
  • TailCallElimination

Transformations on Intermediate Representation

  • Target different platforms (e.g. Intel)
  • Constant and copy propagation
  • Dead code elimination

Transformations on ASM Code

  • Improve spilling heuristics in the register allocator

Extensions of the Run Time System

  • Garbage collection

Other

  • Parallel execution

-- EelcoVisser - 04 Dec 2001

Revision: r1.4 - 06 Dec 2001 - 22:19 - EelcoVisser
Tiger > HpcAssignments > AddAnOptimizer
Copyright © 1999-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback