SUMMARY
-------

We met to discuss the LLVM instruction format and bytecode representation:

ISSUES RESOLVED
---------------

1. We decided that we shall use a flat namespace to represent our 
   variables in SSA form, as opposed to having a two dimensional namespace
   of the original variable and the SSA instance subscript.

ARGUMENT AGAINST:
   * A two dimensional namespace would be valuable when doing alias 
     analysis because the extra information can help limit the scope of
     analysis.

ARGUMENT FOR:
   * Including this information would require that all users of the LLVM
     bytecode would have to parse and handle it.  This would slow down the
     common case and inflate the instruction representation with another
     infinite variable space.

REASONING:
   * It was decided that because original variable sources could be
     reconstructed from SSA form in linear time, that it would be an
     unjustified expense for the common case to include the extra
     information for one optimization.  Alias analysis itself is typically
     greater than linear in asymptotic complexity, so this extra analaysis
     would not affect the runtime of the optimization in a significant
     way.  Additionally, this would be an unlikely optimization to do at
     runtime.


IDEAS TO CONSIDER
-----------------

1. Including dominator information in the LLVM bytecode
   representation.  This is one example of an analysis result that may be
   packaged with the bytecodes themselves.  As a conceptual implementation 
   idea, we could include an immediate dominator number for each basic block
   in the LLVM bytecode program.  Basic blocks could be numbered according
   to the order of occurrence in the bytecode representation.

2. Including loop header and body information.  This would facilitate
   detection of intervals and natural loops.

UNRESOLVED ISSUES 
----------------- 

1. Will oSUIF provide enough of an infrastructure to support the research
   that we will be doing?  We know that it has less than stellar
   performance, but hope that this will be of little importance for our
   static compiler.  This could affect us if we decided to do some IP
   research.  Also we do not yet understand the level of exception support
   currently implemented.

2. Should we consider the requirements of a direct hardware implementation
   of the LLVM when we design it?  If so, several design issues should
   have their priorities shifted.  The other option is to focus on a
   software layer interpreting the LLVM in all cases.

3. Should we use some form of packetized format to improve forward
   compatibility?  For example, we could design the system to encode a
   packet type and length field before analysis information, to allow a
   runtime to skip information that it didn't understand in a bytecode
   stream.  The obvious benefit would be for compatibility, the drawback
   is that it would tend to splinter that 'standard' LLVM definition.

4. Should we use fixed length instructions or variable length
   instructions?  Fetching variable length instructions is expensive (for
   either hardware or software based LLVM runtimes), but we have several
   'infinite' spaces that instructions operate in (SSA register numbers,
   type spaces, or packet length [if packets were implemented]).  Several
   options were mentioned including: 
     A. Using 16 or 32 bit numbers, which would be 'big enough'
     B. A scheme similar to how UTF-8 works, to encode infinite numbers
        while keeping small number small.
     C. Use something similar to Huffman encoding, so that the most common
        numbers are the smallest.

-Chris

