From 73df946d56c74384511a194dd01dbe099584fd1a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 15:14:23 +0200 Subject: Adding upstream version 1.16.10. Signed-off-by: Daniel Baumann --- test/fixedbugs/bug494.go | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 test/fixedbugs/bug494.go (limited to 'test/fixedbugs/bug494.go') diff --git a/test/fixedbugs/bug494.go b/test/fixedbugs/bug494.go new file mode 100644 index 0000000..42f1879 --- /dev/null +++ b/test/fixedbugs/bug494.go @@ -0,0 +1,51 @@ +// run + +// Copyright 2014 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. + +// Gccgo incorrectly executed functions multiple times when they +// appeared in a composite literal that required a conversion between +// different interface types. + +package main + +type MyInt int + +var c MyInt + +func (c *MyInt) S(i int) { + *c = MyInt(i) +} + +func (c *MyInt) V() int { + return int(*c) +} + +type i1 interface { + S(int) + V() int +} + +type i2 interface { + V() int +} + +type s struct { + i i2 +} + +func f() i1 { + c++ + return &c +} + +func main() { + p := &s{f()} + if v := p.i.V(); v != 1 { + panic(v) + } + if c != 1 { + panic(c) + } +} -- cgit v1.2.3