1
0
mirror of https://github.com/golang/go synced 2024-11-26 14:26:51 -07:00

[dev.typeparams] cmd/compile: add -d=unified flag to enable unified IR

This CL adds a new -d=unified debug flag, which controls whether
unified IR mode is used.

Change-Id: Iaa5f3cc0a24b9881aeec5317cd6b462b4a7b6fc9
Reviewed-on: https://go-review.googlesource.com/c/go/+/327054
Trust: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
Matthew Dempsky 2021-06-11 03:54:25 -07:00
parent 79cd1687e6
commit cf1ae5fc36
3 changed files with 10 additions and 0 deletions

View File

@ -46,6 +46,7 @@ type DebugFlags struct {
SoftFloat int `help:"force compiler to emit soft-float code"` SoftFloat int `help:"force compiler to emit soft-float code"`
TypeAssert int `help:"print information about type assertion inlining"` TypeAssert int `help:"print information about type assertion inlining"`
TypecheckInl int `help:"eager typechecking of inline function bodies"` TypecheckInl int `help:"eager typechecking of inline function bodies"`
Unified int `help:"enable unified IR construction"`
WB int `help:"print information about write barriers"` WB int `help:"print information about write barriers"`
ABIWrap int `help:"print information about ABI wrapper generation"` ABIWrap int `help:"print information about ABI wrapper generation"`

View File

@ -76,6 +76,11 @@ func LoadPackage(filenames []string) {
} }
base.Timer.AddEvent(int64(lines), "lines") base.Timer.AddEvent(int64(lines), "lines")
if base.Debug.Unified != 0 {
useUnifiedIR(noders)
return
}
if base.Flag.G != 0 { if base.Flag.G != 0 {
// Use types2 to type-check and possibly generate IR. // Use types2 to type-check and possibly generate IR.
check2(noders) check2(noders)

View File

@ -1780,6 +1780,10 @@ func methodWrapper(rcvr *types.Type, method *types.Field, forItab bool) *obj.LSy
// TODO: check that we do the right thing when rcvr.IsInterface(). // TODO: check that we do the right thing when rcvr.IsInterface().
generic = true generic = true
} }
if base.Debug.Unified != 0 {
// TODO(mdempsky): Support dictionaries for unified IR.
generic = false
}
newnam := ir.MethodSym(rcvr, method.Sym) newnam := ir.MethodSym(rcvr, method.Sym)
lsym := newnam.Linksym() lsym := newnam.Linksym()
if newnam.Siggen() { if newnam.Siggen() {