Home | History | Annotate | Download | only in ssa
      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
     47