The >>1 shift needs to happen before converting to int32, otherwise
large values will decode with an incorrect sign bit.
The <<31 shift can happen before or after, but before is consistent
with liblink and the go12symtab doc.
Bug demo at http://play.golang.org/p/jLrhPUakIu
LGTM=rsc
R=golang-codereviews, minux, rsc
CC=golang-codereviews
https://golang.org/cl/
119630043
return
}
it.start = false
- sv := int32(uv)>>1 ^ int32(uv)<<31>>31
+ sv := int32(uv>>1) ^ int32(uv<<31)>>31
it.Value += sv
// pc delta