diff options
author | Keith Randall <khr@golang.org> | 2016-01-11 21:05:33 -0800 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2016-01-20 22:37:11 +0000 |
commit | a734bbc95349a487c78ff02eda07e3f219808be3 (patch) | |
tree | fcd7692dd11201d31597f31c14f03efa481671c6 /src/cmd/compile/internal/ssa/TODO | |
parent | b5c5efd5de4c4668b149d1dba4d9b00c88dd0b80 (diff) | |
download | go-a734bbc95349a487c78ff02eda07e3f219808be3.tar.gz go-a734bbc95349a487c78ff02eda07e3f219808be3.zip |
[dev.ssa] cmd/compile: Allow structs to be SSAd
Break small structs up into their components so they
can be registerized.
Change StructSelect to use field indexes instead of
field offsets, as field offsets aren't unique in the
presence of zero-sized fields.
Change-Id: I2f1dc89f7fa58e1cf58aa1a32b238959d53f62e4
Reviewed-on: https://go-review.googlesource.com/18570
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/TODO')
-rw-r--r-- | src/cmd/compile/internal/ssa/TODO | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/ssa/TODO b/src/cmd/compile/internal/ssa/TODO index d4904e1dcf..23f8abb6ca 100644 --- a/src/cmd/compile/internal/ssa/TODO +++ b/src/cmd/compile/internal/ssa/TODO @@ -9,6 +9,8 @@ Correctness - Debugging info (check & fix as much as we can) - Fix write barriers so cgo tests work (misc/cgo/errors/ptr.go) - Re-enable TestStackBarrierProfiling (src/runtime/pprof/pprof_test.go) +- @ directive in rewrites might read overwritten data. Save @loc + in variable before modifying v. Optimizations (better compiled code) ------------------------------------ @@ -28,7 +30,7 @@ Optimizations (better compiled code) - Use better write barrier calls - If there are a lot of MOVQ $0, ..., then load 0 into a register and use the register as the source instead. -- Allow structs (and arrays of length 1?) to be SSAable. +- Allow arrays of length 1 (or longer, with all constant indexes?) to be SSAable. - Figure out how to make PARAMOUT variables ssa-able. They need to get spilled automatically at end-of-function somehow. - If strings are being passed around without being interpreted (ptr |