1
0
mirror of https://github.com/golang/go synced 2024-10-05 16:41:21 -06:00

[dev.ssa] cmd/compile/internal/ssa: update TODO and comments

Change-Id: I3c598faff8af18530ae863b9e72f0cef379b4a1f
Reviewed-on: https://go-review.googlesource.com/13909
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Keith Randall 2015-08-25 10:39:23 -07:00
parent 3526cf586b
commit ec39d78ddd
2 changed files with 2 additions and 12 deletions

View File

@ -3,10 +3,7 @@ be complete soon.
Coverage
--------
- Floating point numbers
- Complex numbers
- Integer division (MOD)
- Fat objects (strings/slices/interfaces) vs. Phi
- Defer?
- Closure args
- PHEAP vars
@ -16,11 +13,10 @@ Correctness
- GC maps
- Write barriers
- Debugging info
- Handle flags register correctly (clobber/spill/restore)
- Proper panic edges from checks & calls (+deferreturn)
- Deferreturn
- Can/should we move control values out of their basic block?
- Anything to do for the race detector?
- Slicing details (avoid ptr to next object)
- Slicing details (avoid ptr to next object) [done for string]
Optimizations (better compiled code)
------------------------------------
@ -32,10 +28,7 @@ Optimizations (better compiled code)
- Combining nil checks with subsequent load
- Implement memory zeroing with REPSTOSQ and DuffZero
- Implement memory copying with REPMOVSQ and DuffCopy
- Make deadstore work with zeroing
- Add branch predictions
- Add a value range propagation pass (for bounds elim & bitwidth reduction)
- Stackalloc: group pointer-containing variables & spill slots together
- Stackalloc: organize values to allow good packing
- Regalloc: use arg slots as the home for arguments (don't copy args to locals)
- Reuse stack slots for noninterfering & compatible values (but see issue 8740)
@ -55,10 +48,8 @@ Optimizations (better compiler)
Regalloc
--------
- Make less arch-dependent
- Don't spill everything at every basic block boundary
- Allow args and return values to be ssa-able
- Handle 2-address instructions
- Make calls clobber all registers
- Make liveness analysis non-quadratic
- Materialization of constants

View File

@ -25,7 +25,6 @@ var genericOps = []opData{
{name: "Sub32F"},
{name: "Sub64F"},
// TODO: Sub64C, Sub128C
// TODO: Sub32F, Sub64F, Sub64C, Sub128C
{name: "Mul8"}, // arg0 * arg1
{name: "Mul16"},