diff options
author | philhofer <phofer@umich.edu> | 2017-02-20 08:43:54 -0800 |
---|---|---|
committer | Josh Bleecher Snyder <josharian@gmail.com> | 2017-02-28 20:25:33 +0000 |
commit | 379567aad19e97eb2145d7bbe45a7a2febccd3e4 (patch) | |
tree | bd3ac504ff25f903382e20aec8adf4c89700b324 /test/loopbce.go | |
parent | 504bc3ed24765294cf3d665a68d57a6e4fc7d23a (diff) | |
download | go-379567aad19e97eb2145d7bbe45a7a2febccd3e4.tar.gz go-379567aad19e97eb2145d7bbe45a7a2febccd3e4.zip |
cmd/compile/ssa: more aggressive constant folding
Add rewrite rules that canonicalize the location
of constants in expressions, and fold conststants
that appear in operations that can be trivially
reassociated.
After this change, the compiler constant-folds
expressions like "4 + x - 1" and "4 & x & 1"
Benchmarks affected on darwin/amd64:
name old time/op new time/op delta
FmtFprintfInt-8 82.1ns ± 1% 81.7ns ± 1% -0.46% (p=0.023 n=8+9)
FmtFprintfIntInt-8 122ns ± 2% 120ns ± 2% -1.48% (p=0.047 n=10+10)
FmtManyArgs-8 493ns ± 0% 486ns ± 1% -1.37% (p=0.000 n=8+10)
Gzip-8 230ms ± 0% 229ms ± 1% -0.46% (p=0.001 n=10+9)
HTTPClientServer-8 74.5µs ± 1% 73.7µs ± 1% -1.11% (p=0.000 n=10+10)
JSONDecode-8 51.7ms ± 0% 51.9ms ± 1% +0.42% (p=0.017 n=10+9)
RegexpMatchEasy0_32-8 82.6ns ± 1% 81.7ns ± 0% -1.02% (p=0.000 n=9+8)
RegexpMatchMedium_32-8 121ns ± 1% 120ns ± 1% -1.48% (p=0.001 n=10+10)
Revcomp-8 426ms ± 1% 400ms ± 1% -6.16% (p=0.000 n=10+10)
TimeFormat-8 330ns ± 1% 327ns ± 0% -0.82% (p=0.000 n=10+10)
name old speed new speed delta
Gzip-8 84.4MB/s ± 0% 84.8MB/s ± 1% +0.47% (p=0.001 n=10+9)
JSONDecode-8 37.6MB/s ± 0% 37.4MB/s ± 1% -0.42% (p=0.016 n=10+9)
RegexpMatchEasy0_32-8 387MB/s ± 1% 392MB/s ± 0% +1.06% (p=0.000 n=9+8)
RegexpMatchMedium_32-8 8.21MB/s ± 1% 8.34MB/s ± 1% +1.58% (p=0.000 n=10+9)
Revcomp-8 597MB/s ± 1% 636MB/s ± 1% +6.57% (p=0.000 n=10+10)
Change-Id: Ie37ff91605b76a984a8400dfd1e34f50bf61c864
Reviewed-on: https://go-review.googlesource.com/37290
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'test/loopbce.go')
-rw-r--r-- | test/loopbce.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/test/loopbce.go b/test/loopbce.go index ea195217e6..010f11f027 100644 --- a/test/loopbce.go +++ b/test/loopbce.go @@ -197,7 +197,7 @@ func k4(a [100]int) [100]int { func k5(a [100]int) [100]int { max := (1 << 63) - 1 for i := max - 50; i < max; i++ { // ERROR "Induction variable with minimum 9223372036854775757 and increment 1$" - a[i-max+50] = i + a[i-max+50] = i // ERROR "Found redundant \(IsInBounds ind 100\), ind < 50$" a[i-(max-70)] = i // ERROR "Found redundant \(IsInBounds ind 100\), ind < 70$" } return a |