mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.ssa] cmd/compile: Do pointer arithmetic with int, not uintptr
Be more consistent about this. There's no reason to do the pointer arithmetic on a different type, as sizeof(int) >= sizeof(ptr) on all of our platforms. It simplifies our rewrite rules also, except for a few that need duplication. Add some more constant folding to get constant indexing and slicing to fold down to nothing. Change-Id: I3e56cdb14b3dc1a6a0514f0333e883f92c19e3c7 Reviewed-on: https://go-review.googlesource.com/16586 Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
991873116e
commit
582baae22a
10 changed files with 448 additions and 199 deletions
|
|
@ -141,10 +141,12 @@ func canMergeSym(x, y interface{}) bool {
|
|||
return x == nil || y == nil
|
||||
}
|
||||
|
||||
func inBounds8(idx, len int64) bool { return int8(idx) >= 0 && int8(idx) < int8(len) }
|
||||
func inBounds16(idx, len int64) bool { return int16(idx) >= 0 && int16(idx) < int16(len) }
|
||||
func inBounds32(idx, len int64) bool { return int32(idx) >= 0 && int32(idx) < int32(len) }
|
||||
func inBounds64(idx, len int64) bool { return idx >= 0 && idx < len }
|
||||
func inBounds8(idx, len int64) bool { return int8(idx) >= 0 && int8(idx) < int8(len) }
|
||||
func inBounds16(idx, len int64) bool { return int16(idx) >= 0 && int16(idx) < int16(len) }
|
||||
func inBounds32(idx, len int64) bool { return int32(idx) >= 0 && int32(idx) < int32(len) }
|
||||
func inBounds64(idx, len int64) bool { return idx >= 0 && idx < len }
|
||||
func sliceInBounds32(idx, len int64) bool { return int32(idx) >= 0 && int32(idx) <= int32(len) }
|
||||
func sliceInBounds64(idx, len int64) bool { return idx >= 0 && idx <= len }
|
||||
|
||||
// log2 returns logarithm in base of n.
|
||||
// expects n to be a power of 2.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue