aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/TODO
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2016-02-24 13:08:00 -0800
committerKeith Randall <khr@golang.org>2016-02-24 22:19:56 +0000
commite173ab14345b1f205a8f14e25a81184752a9d43b (patch)
tree8ff436006421b8742fdbbdca966c1b7685c3eb5a /src/cmd/compile/internal/ssa/TODO
parent288817b05a0ea1671c87b7c3ed021fed874d0caa (diff)
downloadgo-e173ab14345b1f205a8f14e25a81184752a9d43b.tar.gz
go-e173ab14345b1f205a8f14e25a81184752a9d43b.zip
[dev.ssa] cmd/compile: update TODO
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>
Diffstat (limited to 'src/cmd/compile/internal/ssa/TODO')
-rw-r--r--src/cmd/compile/internal/ssa/TODO14
1 files changed, 0 insertions, 14 deletions
diff --git a/src/cmd/compile/internal/ssa/TODO b/src/cmd/compile/internal/ssa/TODO
index 5e5cb4b865..91983476a2 100644
--- a/src/cmd/compile/internal/ssa/TODO
+++ b/src/cmd/compile/internal/ssa/TODO
@@ -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