From: cui Date: Thu, 18 Feb 2021 17:51:24 +0000 (+0000) Subject: cmd/compile/internal: loop opt X-Git-Tag: go1.17beta1~1457 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=094048b93845c08e0f2db8639764f9564e64835b;p=gostls13.git cmd/compile/internal: loop opt Change-Id: I5fe767237b8046934e9b0f33bd3dafabdb727dd6 GitHub-Last-Rev: 94fea3d57279e8b2d62f7f6be4301698dc8841e3 GitHub-Pull-Request: golang/go#44384 Reviewed-on: https://go-review.googlesource.com/c/go/+/293809 Reviewed-by: Robert Griesemer Trust: Robert Griesemer Trust: Matthew Dempsky Run-TryBot: Robert Griesemer TryBot-Result: Go Bot --- diff --git a/src/cmd/compile/internal/types/size.go b/src/cmd/compile/internal/types/size.go index d1203e4a21..799cf3a1f6 100644 --- a/src/cmd/compile/internal/types/size.go +++ b/src/cmd/compile/internal/types/size.go @@ -624,9 +624,11 @@ func PtrDataSize(t *Type) int64 { case TSTRUCT: // Find the last field that has pointers. var lastPtrField *Field - for _, t1 := range t.Fields().Slice() { - if t1.Type.HasPointers() { - lastPtrField = t1 + fs := t.Fields().Slice() + for i := len(fs) - 1; i >= 0; i-- { + if fs[i].Type.HasPointers() { + lastPtrField = fs[i] + break } } return lastPtrField.Offset + PtrDataSize(lastPtrField.Type)