In this meeting we decided on what to tackled in the first cut of RTCG under Multiflow. We went over a list of features that we might want and chose a subset.

We will do the following:

  • We will guarantee correctness for programs no matter what values run-time constants finally have. This differs from the gcc version, which could only handle constants that fit into an Alpha immediate field.
  • We will use sub-templates to handle situations where whether code is executed (or the version of code that is executed) depends on run-time constants. Sub-templates are templates for part of dynamic region. The stitcher will combine sub-templates based on stitcher directives and values of run-time constants. If we can do them efficiently enough, we may use sub-templates for all cases in which the of a the size of code depends of run-time constants, including inserting run-time constants into an instruction (which may take 1 instruction if the constant fits in an immediate field, or many if it must be built into a register).
  • We will do proper full loop unrolling, including loops whose bounds are determined by a run-time constant (such as a string or linked-list). The offline compiler will generate a sub-template corresponding to a single iteration of the loop body and perhaps also sub-templates corresponding to multiple (unrolled) iterations. These will be combined by the stitcher. We will careful never to introduce infinite loops where they did not exist before. Induction variables will be treated as run-time constants as well. A consequence of this is that the number of run-time constants is now determined at run time, not offline.
  • We will also handle "if" and "switch" statements using sub-templates. In general there may be sub-templates nested in sub-templates if there are nested loops or "if's" or "if's" in loops or such.
  • We won't include the following:


    ausland@cs.washington.edu