From a4fb8c13db3f1501f8195306de571b64ed1aeb73 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sun, 1 Nov 2015 12:30:54 -0800 Subject: [PATCH] test: add gcc6798, valid code that caused gccgo to crash Change-Id: I288bd3091ea81db7b616747cbec8958a31d98b7e Reviewed-on: https://go-review.googlesource.com/16532 Reviewed-by: Brad Fitzpatrick --- test/fixedbugs/gcc67968.dir/a.go | 12 ++++++++++++ test/fixedbugs/gcc67968.dir/b.go | 12 ++++++++++++ test/fixedbugs/gcc67968.go | 14 ++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 test/fixedbugs/gcc67968.dir/a.go create mode 100644 test/fixedbugs/gcc67968.dir/b.go create mode 100644 test/fixedbugs/gcc67968.go diff --git a/test/fixedbugs/gcc67968.dir/a.go b/test/fixedbugs/gcc67968.dir/a.go new file mode 100644 index 0000000000..9f51a7a8bc --- /dev/null +++ b/test/fixedbugs/gcc67968.dir/a.go @@ -0,0 +1,12 @@ +// Copyright 2015 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 a + +type T int + +func (a *T) Foo() [1]string { + var r [1]string + return r +} diff --git a/test/fixedbugs/gcc67968.dir/b.go b/test/fixedbugs/gcc67968.dir/b.go new file mode 100644 index 0000000000..41b62d2088 --- /dev/null +++ b/test/fixedbugs/gcc67968.dir/b.go @@ -0,0 +1,12 @@ +// Copyright 2015 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 b + +import "./a" + +func F() (interface{}) { + var v *a.T + return v.Foo() +} diff --git a/test/fixedbugs/gcc67968.go b/test/fixedbugs/gcc67968.go new file mode 100644 index 0000000000..8db3dd8a51 --- /dev/null +++ b/test/fixedbugs/gcc67968.go @@ -0,0 +1,14 @@ +// compiledir + +// Copyright 2015 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. + +// https://gcc.gnu.org/PR67968 + +// gccgo compiler crash building the equality and hash functions for a +// type when a return statement requires a conversion to interface +// type of a call of function defined in a different package that +// returns an unnamed type. + +package ignored