]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: try to rewrite loops to count down
authorJorropo <jorropo.pgm@gmail.com>
Tue, 25 Jul 2023 14:19:10 +0000 (16:19 +0200)
committerGopher Robot <gobot@golang.org>
Mon, 31 Jul 2023 18:33:29 +0000 (18:33 +0000)
commitbac4e2f241ca8df3d5be6ddf83214b9a681f4086
tree6fcd6b62c19354d7e6ba9496a764976982db0c16
parent8613ef81e676bda77f6413a587e68c3dcc5b03ae
cmd/compile: try to rewrite loops to count down

Fixes #61629

This reduce the pressure on regalloc because then the loop only keep alive
one value (the iterator) instead of the iterator and the upper bound since
the comparison now acts against an immediate, often zero which can be skipped.

This optimize things like:
  for i := 0; i < n; i++ {
Or a range over a slice where the index is not used:
  for _, v := range someSlice {
Or the new range over int from #61405:
  for range n {

It is hit in 975 unique places while doing ./make.bash.

Change-Id: I5facff8b267a0b60ea3c1b9a58c4d74cdb38f03f
Reviewed-on: https://go-review.googlesource.com/c/go/+/512935
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Jorropo <jorropo.pgm@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ssa/loopbce.go
src/cmd/compile/internal/ssa/prove.go
test/codegen/compare_and_branch.go
test/prove_invert_loop_with_unused_iterators.go [new file with mode: 0644]