]> Cypherpunks repositories - gostls13.git/commit
[dev.ssa] cmd/compile: fix scheduling of tuple ops
authorCherry Zhang <cherryyz@google.com>
Wed, 1 Jun 2016 10:41:08 +0000 (06:41 -0400)
committerCherry Zhang <cherryyz@google.com>
Wed, 8 Jun 2016 20:37:13 +0000 (20:37 +0000)
commit225ef76c250fc9ab9794fd723952209e2ff440aa
treedf4dea32624eb22027dcde8271b2fe9bd11da907
parent59e11d782717407fcdf288664a48beb52336d42a
[dev.ssa] cmd/compile: fix scheduling of tuple ops

We want tuple-reading ops immediately follow tuple-generating op, so
that tuple values will not be spilled/copied.

The mechanism introduced in the previous CL cannot really avoid tuples
interleaving. In this CL we always emit tuple and their selectors together.
Maybe remove the tuple scores if it does not help on performance (todo).

Also let tighten not move tuple-reading ops across blocks.

In the previous CL a special case of regenerating flags with tuple-reading
pseudo-op is added, but it did not cover end-of-block case. This is fixed
in this CL and the condition is generalized.

Progress on SSA backend for ARM. Still not complete.

Updates #15365.

Change-Id: I8980b34e7a64eb98153540e9e19a3782e20406ff
Reviewed-on: https://go-review.googlesource.com/23792
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/ssa/flagalloc.go
src/cmd/compile/internal/ssa/schedule.go
src/cmd/compile/internal/ssa/tighten.go