Commit c8012325 authored by Cherry Zhang's avatar Cherry Zhang

cmd/compile: make sure alg functions are generated when we call them

When DWARF is disabled, some alg functions were not generated.
Make sure they are generated when we about to generate calls to
them.

Fixes #23546.

Change-Id: Iecfa0eea830e42ee92e55268167cefb1540980b2
Reviewed-on: https://go-review.googlesource.com/122403
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: 's avatarKeith Randall <khr@golang.org>
Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
parent 5f256dc8
......@@ -958,6 +958,12 @@ func typesymprefix(prefix string, t *types.Type) *types.Sym {
p := prefix + "." + t.ShortString()
s := typeLookup(p)
// This function is for looking up type-related generated functions
// (e.g. eq and hash). Make sure they are indeed generated.
signatsetmu.Lock()
addsignat(t)
signatsetmu.Unlock()
//print("algsym: %s -> %+S\n", p, s);
return s
......
......@@ -4,12 +4,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build gccgo
// Issue 23545: gccgo didn't lower array comparison to
// proper equality function in some case.
// TODO: build only on gccgo for now, as it hits issue
// #23546.
package main
......
// run
// Copyright 2018 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.
// Issue 23546: type..eq function not generated when
// DWARF is disabled.
package main
func main() {
use(f() == f())
}
func f() [2]interface{} {
var out [2]interface{}
return out
}
//go:noinline
func use(bool) {}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment