]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile: report functions declared in Go and assembly
authorMatthew Dempsky <mdempsky@google.com>
Thu, 8 Jul 2021 06:32:49 +0000 (23:32 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Sat, 10 Jul 2021 00:13:14 +0000 (00:13 +0000)
This CL reuses the symabi wrapper information to warn when a function
is defined both in Go (i.e., has a function declaration with a body)
and in assembly (i.e., has a TEXT instruction).

This will eventually produce a linker error anyway, but we can provide
a slightly nicer error message earlier.

Change-Id: Ia107f813343c0b10f4cd1013e7c72e67149ee52e
Reviewed-on: https://go-review.googlesource.com/c/go/+/333454
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/compile/internal/ssagen/abi.go

index e460adaf95d143f2403f40a0ab0607a68ef2ffb1..6d8c53e7225fd93893852a1348171be89cc1d7f2 100644 (file)
@@ -152,6 +152,9 @@ func (s *SymABIs) GenABIWrappers() {
                // Apply definitions.
                defABI, hasDefABI := s.defs[symName]
                if hasDefABI {
+                       if len(fn.Body) != 0 {
+                               base.ErrorfAt(fn.Pos(), "%v defined in both Go and assembly", fn)
+                       }
                        fn.ABI = defABI
                }