From 94fea3d57279e8b2d62f7f6be4301698dc8841e3 Mon Sep 17 00:00:00 2001 From: cui Date: Fri, 19 Feb 2021 01:24:13 +0800 Subject: [PATCH] cmd/compile/internal: loop opt Change-Id: I19faa360d72d19943c66c50167e2b8a17f046b59 --- src/cmd/compile/internal/types/size.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/cmd/compile/internal/types/size.go b/src/cmd/compile/internal/types/size.go index 98540eefb6..37d00bd5ed 100644 --- a/src/cmd/compile/internal/types/size.go +++ b/src/cmd/compile/internal/types/size.go @@ -619,9 +619,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)