mirror of
https://github.com/golang/go
synced 2024-10-05 18:21: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:
parent
3526cf586b
commit
ec39d78ddd
@ -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
|
||||
|
||||
|
@ -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"},
|
||||
|
Loading…
Reference in New Issue
Block a user