diff options
| author | Jorropo <jorropo.pgm@gmail.com> | 2024-08-14 21:25:08 +0200 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2024-09-03 21:12:00 +0000 |
| commit | 4f2c0e5d0806a2f6fbe2d0704683d2b71d8191be (patch) | |
| tree | f302367f5048839d8a8e0ae0d6aec72ee7ceb7c7 /src | |
| parent | 68c431e89f2cb5422d53c65be988b15598a9c692 (diff) | |
| download | go-4f2c0e5d0806a2f6fbe2d0704683d2b71d8191be.tar.xz | |
cmd/compile: compute Trunc's limits from argument's limits
Change-Id: I419faa781db085b98ea25008ca127d0317fb34e1
Reviewed-on: https://go-review.googlesource.com/c/go/+/605695
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/compile/internal/ssa/prove.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/prove.go b/src/cmd/compile/internal/ssa/prove.go index f76e863453..8a351545c9 100644 --- a/src/cmd/compile/internal/ssa/prove.go +++ b/src/cmd/compile/internal/ssa/prove.go @@ -1643,6 +1643,11 @@ func (ft *factsTable) flowLimit(v *Value) bool { case OpSignExt8to64, OpSignExt8to32, OpSignExt8to16, OpSignExt16to64, OpSignExt16to32, OpSignExt32to64: a := ft.limits[v.Args[0].ID] return ft.signedMinMax(v, a.min, a.max) + case OpTrunc64to8, OpTrunc64to16, OpTrunc64to32, OpTrunc32to8, OpTrunc32to16, OpTrunc16to8: + a := ft.limits[v.Args[0].ID] + if a.umax <= 1<<(uint64(v.Type.Size())*8)-1 { + return ft.unsignedMinMax(v, a.umin, a.umax) + } // math/bits case OpCtz64: |
