From f71444955a4c0962abb334a8f39438466c57a4db Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 14 Aug 2020 14:39:19 -0700 Subject: [PATCH] test: add test case that caused gccgo undefined symbol reference For #40252 Change-Id: Ie23d2789ca9b4b9081adb39ab64c80c412ad58ce Reviewed-on: https://go-review.googlesource.com/c/go/+/248637 Run-TryBot: Ian Lance Taylor Reviewed-by: Cherry Zhang TryBot-Result: Gobot Gobot --- test/fixedbugs/issue40252.dir/a.go | 14 ++++++++++++++ test/fixedbugs/issue40252.dir/main.go | 16 ++++++++++++++++ test/fixedbugs/issue40252.go | 8 ++++++++ 3 files changed, 38 insertions(+) create mode 100644 test/fixedbugs/issue40252.dir/a.go create mode 100644 test/fixedbugs/issue40252.dir/main.go create mode 100644 test/fixedbugs/issue40252.go diff --git a/test/fixedbugs/issue40252.dir/a.go b/test/fixedbugs/issue40252.dir/a.go new file mode 100644 index 00000000000..5519e9331aa --- /dev/null +++ b/test/fixedbugs/issue40252.dir/a.go @@ -0,0 +1,14 @@ +// Copyright 2020 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 I interface { + Func() +} + +func Call() { + f := I.Func + f(nil) +} diff --git a/test/fixedbugs/issue40252.dir/main.go b/test/fixedbugs/issue40252.dir/main.go new file mode 100644 index 00000000000..93f5b706242 --- /dev/null +++ b/test/fixedbugs/issue40252.dir/main.go @@ -0,0 +1,16 @@ +// Copyright 2020 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 main + +import "./a" + +func main() { + defer func() { + if recover() == nil { + panic("expected nil pointer dereference") + } + }() + a.Call() +} diff --git a/test/fixedbugs/issue40252.go b/test/fixedbugs/issue40252.go new file mode 100644 index 00000000000..9be4e665d29 --- /dev/null +++ b/test/fixedbugs/issue40252.go @@ -0,0 +1,8 @@ +// rundir + +// Copyright 2020 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 got an undefined symbol reference when inlining a method expression. +package ignored