]> Cypherpunks repositories - gostls13.git/commit
[dev.ssa] cmd/compile: allow rewrite rules to specify a target block
authorKeith Randall <khr@golang.org>
Tue, 13 Oct 2015 18:08:08 +0000 (11:08 -0700)
committerKeith Randall <khr@golang.org>
Wed, 14 Oct 2015 17:43:51 +0000 (17:43 +0000)
commit177b697ba534431a266c9882af53fb776eb9b505
tree38eeb6553b719e049388ff09f30af035fbd43be4
parent9703564c9aaa037b95b6dcbdefe0fa505710c4ff
[dev.ssa] cmd/compile: allow rewrite rules to specify a target block

Some rewrite rules need to make sure the rewrite target ends up
in a specific block.  For example:

(MOVBQSX (MOVBload [off] {sym} ptr mem)) ->
   @v.Args[0].Block (MOVBQSXload <v.Type> [off] {sym} ptr mem)

The MOVBQSXload op needs to be in the same block as the MOVBload
(to ensure exactly one memory is live at basic block boundaries).

Change-Id: Ibe49a4183ca91f6c859cba8135927f01d176e064
Reviewed-on: https://go-review.googlesource.com/15804
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/cmd/compile/internal/ssa/gen/AMD64.rules
src/cmd/compile/internal/ssa/gen/generic.rules
src/cmd/compile/internal/ssa/gen/rulegen.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/cmd/compile/internal/ssa/rewritegeneric.go