summaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/TODO
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2016-01-20 14:06:17 -0800
committerKeith Randall <khr@golang.org>2016-01-21 03:20:29 +0000
commit7730880f7ceda51c025a3c6bd296e1fa2de52318 (patch)
tree35b73dae1ecdf8da56cd9ff5429a449e2a55493c /src/cmd/compile/internal/ssa/TODO
parenta734bbc95349a487c78ff02eda07e3f219808be3 (diff)
downloadgo-git-7730880f7ceda51c025a3c6bd296e1fa2de52318.tar.gz
[dev.ssa] cmd/compile: update SSA TODOs
Change-Id: I78743987dcb45d821212caf95a00ae15b7a6cfd8 Reviewed-on: https://go-review.googlesource.com/18773 Reviewed-by: Andrew Gerrand <adg@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/TODO')
-rw-r--r--src/cmd/compile/internal/ssa/TODO14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/TODO b/src/cmd/compile/internal/ssa/TODO
index 23f8abb6ca..403f98cf40 100644
--- a/src/cmd/compile/internal/ssa/TODO
+++ b/src/cmd/compile/internal/ssa/TODO
@@ -37,6 +37,20 @@ Optimizations (better compiled code)
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
+- (CMP (Load ...)) and (CMPconst (Load ...)) in one instruction
+ (all instructions, really)
+- combine LEAQs
+- store followed by load to same address
+- short circuit blocks which are just a jump (undo critical edge processing when no instructions are put in it by regalloc)
+- (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
Optimizations (better compiler)
-------------------------------