cmd/compile: fix mknode script

It's not currently working. Somehow a field of type []constant.Value
causes it to barf. (That field was added with jump table statements.)

Also added some instructions about how to run it correctly (which took
me a suprisingly long time to figure out).

Larger improvements coming, but this gets us to a working state
and is safe for 1.19.

Change-Id: I3027356fde1294942e87d075ca28bb40d2c0d6c3
Reviewed-on: https://go-review.googlesource.com/c/go/+/418234
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
This commit is contained in:
Keith Randall 2022-07-19 09:07:38 -07:00 committed by Keith Randall
parent 28be440d34
commit 8e1e64c16a
2 changed files with 10 additions and 0 deletions

View file

@ -3,6 +3,7 @@
// license that can be found in the LICENSE file.
//go:generate go run -mod=mod mknode.go
// Note: see comment at top of mknode.go
package ir

View file

@ -5,6 +5,12 @@
//go:build ignore
// +build ignore
// Note: this program must be run with the GOROOT
// environment variable set to the root of this tree.
// GOROOT=...
// cd $GOROOT/src/cmd/compile/internal/ir
// ../../../../../bin/go run -mod=mod mknode.go
package main
import (
@ -154,6 +160,9 @@ func forNodeFields(named *types.Named, prologue, singleTmpl, sliceTmpl, epilogue
}
tmpl, what := singleTmpl, types.TypeString(typ, types.RelativeTo(irPkg))
if what == "go/constant.Value" {
return false
}
if implementsNode(typ) {
if slice != nil {
helper := strings.TrimPrefix(what, "*") + "s"