]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile: update TODO
authorKeith Randall <khr@golang.org>
Wed, 24 Feb 2016 21:08:00 +0000 (13:08 -0800)
committerKeith Randall <khr@golang.org>
Wed, 24 Feb 2016 22:19:56 +0000 (22:19 +0000)
Remove the stuff that's already done.

Change-Id: I3b4fc827240d45dd051dc36897883532d8900a0c
Reviewed-on: https://go-review.googlesource.com/19906
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/ssa/TODO

index 5e5cb4b865aa96884b6297232ffe8b2337238308..91983476a2610ee4e08183f2a258afdb427d4558 100644 (file)
@@ -14,11 +14,8 @@ Optimizations (better compiled code)
 ------------------------------------
 - Reduce register pressure in scheduler
 - More strength reduction: multiply -> shift/add combos (Worth doing?)
-- Strength reduction: constant divides -> multiply
-- Expand current optimizations to all bit widths
 - Add a value range propagation pass (for bounds elim & bitwidth reduction)
 - Make dead store pass inter-block
-- (x86) More combining address arithmetic into loads/stores
 - redundant CMP in sequences like this:
   SUBQ $8, AX
   CMP AX, $0
@@ -31,15 +28,6 @@ Optimizations (better compiled code)
 - If strings are being passed around without being interpreted (ptr
   and len feilds being accessed) pass them in xmm registers?
   Same for interfaces?
-- boolean logic: movb/xorb$1/testb/jeq -> movb/testb/jne
-- (ADDQconst (SUBQconst x)) and vice-versa
-- store followed by load to same address
-- (CMPconst [0] (AND x y)) -> (TEST x y)
-- more (LOAD (ADDQ )) -> LOADIDX
-- CMPL/SETEQ/TESTB/JEQ -> CMPL/JEQ
-  CMPL/SETGE/TESTB/JEQ
-- blockEQ (CMP x x)
-- better computing of &&/|| in non-if/for contexts
 - OpArrayIndex should take its index in AuxInt, not a full value.
 - remove FLAGS from REP instruction clobbers
 - (x86) Combine loads into other ops
@@ -52,10 +40,8 @@ Optimizations (better compiled code)
 Optimizations (better compiler)
 -------------------------------
 - Smaller Value.Type (int32 or ptr)?  Get rid of types altogether?
-- Recycle dead Values (and Blocks) explicitly instead of using GC
 - OpStore uses 3 args.  Increase the size of Value.argstorage to 3?
 - Constant cache
-- Reuseable slices (e.g. []int of size NumValues()) cached in Func
 - Handle signed division overflow and sign extension earlier
 - Implement 64 bit const division with high multiply, maybe in the frontend?
 - Add bit widths to complex ops