From: Andy Pan Date: Sun, 5 Apr 2020 14:21:11 +0000 (+0800) Subject: cmd/internal/obj/ppc64: leverage AND operation to calculate remainder X-Git-Tag: go1.15beta1~609 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a3ef804891ab8185f604d4ae1a2fbb2449e61b2c;p=gostls13.git cmd/internal/obj/ppc64: leverage AND operation to calculate remainder Change-Id: I03e2a573eb778591071db4f783585a5d71a14c03 Reviewed-on: https://go-review.googlesource.com/c/go/+/227005 Run-TryBot: Lynn Boger TryBot-Result: Gobot Gobot Reviewed-by: Lynn Boger --- diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go index 90bee3d9b6..288e5f3360 100644 --- a/src/cmd/internal/obj/ppc64/asm9.go +++ b/src/cmd/internal/obj/ppc64/asm9.go @@ -54,7 +54,8 @@ type ctxt9 struct { // Instruction layout. const ( - funcAlign = 16 + funcAlign = 16 + funcAlignMask = funcAlign - 1 ) const ( @@ -622,11 +623,11 @@ var xcmp [C_NCLASS][C_NCLASS]bool func addpad(pc, a int64, ctxt *obj.Link) int { switch a { case 8: - if pc%8 != 0 { + if pc&7 != 0 { return 4 } case 16: - switch pc % 16 { + switch pc & 15 { case 4, 12: return 4 case 8: @@ -735,8 +736,8 @@ func span9(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { c.cursym.Size = pc } - if pc%funcAlign != 0 { - pc += funcAlign - (pc % funcAlign) + if r := pc & funcAlignMask; r != 0 { + pc += funcAlign - r } c.cursym.Size = pc