1. 08 Mar, 2016 1 commit
    • Matthew Dempsky's avatar
      cmd/internal/obj: stop using as+ALAST as an opcode · e8531316
      Matthew Dempsky authored
      Currently, package obj reserves a range of 1<<12 opcodes for each
      target architecture.  E.g., mips64 has [6<<12, 7<<12).
      
      However, because mips.ABEQ and mips.ALAST are both within that range,
      the expression mips.ABEQ+mips.ALAST in turn falls (far) outside that
      range around 12<<12, meaning it could theoretically collide with
      another arch's opcodes.
      
      More practically, it's a problem because 12<<12 overflows an int16,
      which hampers fixing #14692.  (We could also just switch to uint16 to
      avoid the overflow, but that still leaves the first problem.)
      
      As a workaround, use Michael Hudson-Doyle's solution from
      https://golang.org/cl/20182 and use negative values for these variant
      instructions.
      
      Passes toolstash -cmp for GOARCH=arm and GOARCH=mips64.
      
      Updates #14692.
      
      Change-Id: Iad797d10652360109fa4db19d4d1edb6529fc2c0
      Reviewed-on: https://go-review.googlesource.com/20345
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      e8531316
  2. 07 Mar, 2016 27 commits
  3. 06 Mar, 2016 9 commits
  4. 05 Mar, 2016 3 commits