aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types/size.go
diff options
context:
space:
mode:
authorcui <cuiweixie@gmail.com>2021-02-18 17:51:24 +0000
committerRobert Griesemer <gri@golang.org>2021-02-22 22:55:23 +0000
commit094048b93845c08e0f2db8639764f9564e64835b (patch)
tree7a0d8b9a847915c663b68ba257f868363822df0c /src/cmd/compile/internal/types/size.go
parent1391d4142cab5e5b83ca3362be67af80ba2f95e8 (diff)
downloadgo-094048b93845c08e0f2db8639764f9564e64835b.tar.gz
go-094048b93845c08e0f2db8639764f9564e64835b.zip
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 <gri@golang.org> Trust: Robert Griesemer <gri@golang.org> Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/types/size.go')
-rw-r--r--src/cmd/compile/internal/types/size.go8
1 files changed, 5 insertions, 3 deletions
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)