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:
parent
79cd1687e6
commit
cf1ae5fc36
@ -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"`
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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() {
|
||||||
|
Loading…
Reference in New Issue
Block a user