package main
+import "encoding/binary"
+
func f0(a []int) {
a[0] = 1 // ERROR "Found IsInBounds$"
a[0] = 1
}
}
-func Uint64(b []byte) uint64 {
- _ = b[7] // ERROR "Found IsInBounds$"
- return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |
- uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56
-}
-
func decode1(data []byte) (x uint64) {
for len(data) >= 32 {
- x += Uint64(data[:8])
- x += Uint64(data[8:16])
- x += Uint64(data[16:24])
- x += Uint64(data[24:32])
+ x += binary.BigEndian.Uint64(data[:8])
+ x += binary.BigEndian.Uint64(data[8:16])
+ x += binary.BigEndian.Uint64(data[16:24])
+ x += binary.BigEndian.Uint64(data[24:32])
data = data[32:]
}
return x
// TODO(rasky): this should behave like decode1 and compile to no
// boundchecks. We're currently not able to remove all of them.
for len(data) >= 32 {
- x += Uint64(data)
+ x += binary.BigEndian.Uint64(data)
data = data[8:]
- x += Uint64(data) // ERROR "Found IsInBounds$"
+ x += binary.BigEndian.Uint64(data) // ERROR "Found IsInBounds$"
data = data[8:]
- x += Uint64(data) // ERROR "Found IsInBounds$"
+ x += binary.BigEndian.Uint64(data) // ERROR "Found IsInBounds$"
data = data[8:]
- x += Uint64(data) // ERROR "Found IsInBounds$"
+ x += binary.BigEndian.Uint64(data) // ERROR "Found IsInBounds$"
data = data[8:]
}
return x