github.com/euank/go@v0.0.0-20160829210321-495514729181/src/cmd/compile/internal/ssa/TODO (about)

     1  This is a list of things that need to be worked on.  It will hopefully
     2  be complete soon.
     3  
     4  Correctness
     5  -----------
     6  - Debugging info (check & fix as much as we can)
     7  
     8  Optimizations (better compiled code)
     9  ------------------------------------
    10  - Reduce register pressure in scheduler
    11  - More strength reduction: multiply -> shift/add combos (Worth doing?)
    12  - Add a value range propagation pass (for bounds elim & bitwidth reduction)
    13  - Make dead store pass inter-block
    14  - If there are a lot of MOVQ $0, ..., then load
    15    0 into a register and use the register as the source instead.
    16  - Allow arrays of length 1 (or longer, with all constant indexes?) to be SSAable.
    17  - If strings are being passed around without being interpreted (ptr
    18    and len fields being accessed) pass them in xmm registers?
    19    Same for interfaces?
    20  - Non-constant rotate detection.
    21  - Do 0 <= x && x < n with one unsigned compare
    22  - nil-check removal in indexed load/store case:
    23      lea    (%rdx,%rax,1),%rcx
    24      test   %al,(%rcx)           // nil check
    25      mov    (%rdx,%rax,1),%cl    // load to same address
    26  - any pointer generated by unsafe arithmetic must be non-nil?
    27    (Of course that may not be true in general, but it is for all uses
    28     in the runtime, and we can play games with unsafe.)
    29  
    30  Optimizations (better compiler)
    31  -------------------------------
    32  - Handle signed division overflow and sign extension earlier
    33  
    34  Regalloc
    35  --------
    36  - Make less arch-dependent
    37  - Handle 2-address instructions
    38  - Make liveness analysis non-quadratic
    39  
    40  Future/other
    41  ------------
    42  - Start another architecture (arm?)
    43  - 64-bit ops on 32-bit machines
    44  - Should we get rid of named types in favor of underlying types during SSA generation?
    45  - Infrastructure for enabling/disabling/configuring passes
    46  - Modify logging for at least pass=1, to be Warnl compatible