From 0853f8caec60f59df234c287be7f5971ab62133f Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Wed, 28 Dec 2022 11:21:47 +0700 Subject: [PATCH] cmd/compile: add test that non-name call does not allocate Updates #57434 Change-Id: Ib90c228f95c3d61204e60f63d7de55884d839e05 Reviewed-on: https://go-review.googlesource.com/c/go/+/459496 Reviewed-by: Cherry Mui TryBot-Result: Gopher Robot Reviewed-by: Bryan Mills Auto-Submit: Cuong Manh Le Run-TryBot: Cuong Manh Le --- .../compile/internal/test/issue57434_test.go | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/cmd/compile/internal/test/issue57434_test.go diff --git a/src/cmd/compile/internal/test/issue57434_test.go b/src/cmd/compile/internal/test/issue57434_test.go new file mode 100644 index 00000000000..6a34b54a072 --- /dev/null +++ b/src/cmd/compile/internal/test/issue57434_test.go @@ -0,0 +1,38 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package test + +import ( + "testing" +) + +var output int + +type Object struct { + Val int +} + +func (o *Object) Initialize() *Object { + o.Val = 5 + return o +} + +func (o *Object) Update() *Object { + o.Val = o.Val + 1 + return o +} + +func TestAutotmpLoopDepth(t *testing.T) { + f := func() { + for i := 0; i < 10; i++ { + var obj Object + obj.Initialize().Update() + output = obj.Val + } + } + if n := testing.AllocsPerRun(10, f); n > 0 { + t.Error("obj moved to heap") + } +}