aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile
diff options
context:
space:
mode:
authorDmitri Shuralyov <dmitshur@golang.org>2022-05-14 22:45:05 -0400
committerGopher Robot <gobot@golang.org>2023-01-19 22:42:34 +0000
commit47a0d467161c10f80bc3fcf7b0385b80d1194c7a (patch)
tree07c9ad922004cdc130af9e80da5c4328ef01171d /src/cmd/compile
parent213495a4a67c318a1fab6e76093e6690c2141c0e (diff)
downloadgo-47a0d467161c10f80bc3fcf7b0385b80d1194c7a.tar.xz
cmd/compile/internal/ssa: generate code via a //go:generate directive
The standard way to generate code in a Go package is via //go:generate directives, which are invoked by the developer explicitly running: go generate import/path/of/said/package Switch to using that approach here. This way, developers don't need to learn and remember a custom way that each particular Go package may choose to implement its code generation. It also enables conveniences such as 'go generate -n' to discover how code is generated without running anything (this works on all packages that rely on //go:generate directives), being able to generate multiple packages at once and from any directory, and so on. Change-Id: I0e5b6a1edeff670a8e588befeef0c445613803c7 Reviewed-on: https://go-review.googlesource.com/c/go/+/460135 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Keith Randall <khr@google.com> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/compile')
-rw-r--r--src/cmd/compile/internal/ssa/README.md4
-rw-r--r--src/cmd/compile/internal/ssa/_gen/README10
-rw-r--r--src/cmd/compile/internal/ssa/_gen/allocators.go2
-rw-r--r--src/cmd/compile/internal/ssa/_gen/main.go2
-rw-r--r--src/cmd/compile/internal/ssa/_gen/rulegen.go3
-rw-r--r--src/cmd/compile/internal/ssa/allocators.go2
-rw-r--r--src/cmd/compile/internal/ssa/generate.go9
-rw-r--r--src/cmd/compile/internal/ssa/opGen.go2
-rw-r--r--src/cmd/compile/internal/ssa/rewrite386.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewrite386splitload.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteAMD64.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteAMD64latelower.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteAMD64splitload.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteARM.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteARM64.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteARM64latelower.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteLOONG64.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteMIPS.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteMIPS64.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewritePPC64.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewritePPC64latelower.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteRISCV64.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteRISCV64latelower.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteS390X.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewriteWasm.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewritedec.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewritedec64.go3
-rw-r--r--src/cmd/compile/internal/ssa/rewritegeneric.go3
28 files changed, 43 insertions, 51 deletions
diff --git a/src/cmd/compile/internal/ssa/README.md b/src/cmd/compile/internal/ssa/README.md
index 27ac02b4a2..5dc4fbee6f 100644
--- a/src/cmd/compile/internal/ssa/README.md
+++ b/src/cmd/compile/internal/ssa/README.md
@@ -214,8 +214,8 @@ To read more on rewrite rules, have a look at the top comments in
Similarly, the code to manage operators is also code generated from
`_gen/*Ops.go`, as it is easier to maintain a few tables than a lot of code.
-After changing the rules or operators, see [_gen/README](_gen/README) for
-instructions on how to generate the Go code again.
+After changing the rules or operators, run `go generate cmd/compile/internal/ssa`
+to generate the Go code again.
<!---
TODO: more tips and info could likely go here
diff --git a/src/cmd/compile/internal/ssa/_gen/README b/src/cmd/compile/internal/ssa/_gen/README
index 0c7ceba7eb..74b81c2814 100644
--- a/src/cmd/compile/internal/ssa/_gen/README
+++ b/src/cmd/compile/internal/ssa/_gen/README
@@ -2,6 +2,10 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-This package generates opcode tables, rewrite rules, etc. for the ssa compiler.
-Run it with go-1.13 (or above):
- go run .
+This command generates Go code (in the parent directory) for all
+the architecture-specific opcodes, blocks, and rewrites. See the
+"Hacking on SSA" section in the parent directory's README.md for
+more information.
+
+To regenerate everything, run "go generate" on the ssa package
+in the parent directory.
diff --git a/src/cmd/compile/internal/ssa/_gen/allocators.go b/src/cmd/compile/internal/ssa/_gen/allocators.go
index 0f3968c485..48a2598d05 100644
--- a/src/cmd/compile/internal/ssa/_gen/allocators.go
+++ b/src/cmd/compile/internal/ssa/_gen/allocators.go
@@ -128,7 +128,7 @@ func genAllocators() {
}
w := new(bytes.Buffer)
- fmt.Fprintf(w, "// Code generated from _gen/allocators.go; DO NOT EDIT.\n")
+ fmt.Fprintf(w, "// Code generated from _gen/allocators.go using 'go generate'; DO NOT EDIT.\n")
fmt.Fprintln(w)
fmt.Fprintln(w, "package ssa")
diff --git a/src/cmd/compile/internal/ssa/_gen/main.go b/src/cmd/compile/internal/ssa/_gen/main.go
index 9251ba5d2d..086418c7cb 100644
--- a/src/cmd/compile/internal/ssa/_gen/main.go
+++ b/src/cmd/compile/internal/ssa/_gen/main.go
@@ -191,7 +191,7 @@ func main() {
func genOp() {
w := new(bytes.Buffer)
- fmt.Fprintf(w, "// Code generated from _gen/*Ops.go; DO NOT EDIT.\n")
+ fmt.Fprintf(w, "// Code generated from _gen/*Ops.go using 'go generate'; DO NOT EDIT.\n")
fmt.Fprintln(w)
fmt.Fprintln(w, "package ssa")
diff --git a/src/cmd/compile/internal/ssa/_gen/rulegen.go b/src/cmd/compile/internal/ssa/_gen/rulegen.go
index 80fa37a86b..2840e8f458 100644
--- a/src/cmd/compile/internal/ssa/_gen/rulegen.go
+++ b/src/cmd/compile/internal/ssa/_gen/rulegen.go
@@ -576,8 +576,7 @@ func fprint(w io.Writer, n Node) {
case *File:
file := n
seenRewrite := make(map[[3]string]string)
- fmt.Fprintf(w, "// Code generated from _gen/%s%s.rules; DO NOT EDIT.\n", n.Arch.name, n.Suffix)
- fmt.Fprintf(w, "// generated with: cd _gen; go run .\n")
+ fmt.Fprintf(w, "// Code generated from _gen/%s%s.rules using 'go generate'; DO NOT EDIT.\n", n.Arch.name, n.Suffix)
fmt.Fprintf(w, "\npackage ssa\n")
for _, path := range append([]string{
"fmt",
diff --git a/src/cmd/compile/internal/ssa/allocators.go b/src/cmd/compile/internal/ssa/allocators.go
index 7cd7cad1e9..d782464c02 100644
--- a/src/cmd/compile/internal/ssa/allocators.go
+++ b/src/cmd/compile/internal/ssa/allocators.go
@@ -1,4 +1,4 @@
-// Code generated from _gen/allocators.go; DO NOT EDIT.
+// Code generated from _gen/allocators.go using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/generate.go b/src/cmd/compile/internal/ssa/generate.go
new file mode 100644
index 0000000000..74c5b31829
--- /dev/null
+++ b/src/cmd/compile/internal/ssa/generate.go
@@ -0,0 +1,9 @@
+// Copyright 2022 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.
+
+//go:build generate
+
+package ssa
+
+//go:generate go run -C=_gen .
diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go
index 407ecbb250..9ff0ad353e 100644
--- a/src/cmd/compile/internal/ssa/opGen.go
+++ b/src/cmd/compile/internal/ssa/opGen.go
@@ -1,4 +1,4 @@
-// Code generated from _gen/*Ops.go; DO NOT EDIT.
+// Code generated from _gen/*Ops.go using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewrite386.go b/src/cmd/compile/internal/ssa/rewrite386.go
index 0cacfe3834..a7671e9190 100644
--- a/src/cmd/compile/internal/ssa/rewrite386.go
+++ b/src/cmd/compile/internal/ssa/rewrite386.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/386.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/386.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewrite386splitload.go b/src/cmd/compile/internal/ssa/rewrite386splitload.go
index ef3bf262b9..a8bd6aaff4 100644
--- a/src/cmd/compile/internal/ssa/rewrite386splitload.go
+++ b/src/cmd/compile/internal/ssa/rewrite386splitload.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/386splitload.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/386splitload.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64.go b/src/cmd/compile/internal/ssa/rewriteAMD64.go
index cad37d4039..395b2b1e6e 100644
--- a/src/cmd/compile/internal/ssa/rewriteAMD64.go
+++ b/src/cmd/compile/internal/ssa/rewriteAMD64.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/AMD64.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/AMD64.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64latelower.go b/src/cmd/compile/internal/ssa/rewriteAMD64latelower.go
index 792cddd09e..a6ba7d9e33 100644
--- a/src/cmd/compile/internal/ssa/rewriteAMD64latelower.go
+++ b/src/cmd/compile/internal/ssa/rewriteAMD64latelower.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/AMD64latelower.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/AMD64latelower.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go b/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go
index b443f1687e..0dcb1b460f 100644
--- a/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go
+++ b/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/AMD64splitload.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/AMD64splitload.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteARM.go b/src/cmd/compile/internal/ssa/rewriteARM.go
index 8fa2a6af1d..c31d89c1fd 100644
--- a/src/cmd/compile/internal/ssa/rewriteARM.go
+++ b/src/cmd/compile/internal/ssa/rewriteARM.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/ARM.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/ARM.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteARM64.go b/src/cmd/compile/internal/ssa/rewriteARM64.go
index e82a49c331..88c690be1f 100644
--- a/src/cmd/compile/internal/ssa/rewriteARM64.go
+++ b/src/cmd/compile/internal/ssa/rewriteARM64.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/ARM64.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/ARM64.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteARM64latelower.go b/src/cmd/compile/internal/ssa/rewriteARM64latelower.go
index 49e154821d..0998757185 100644
--- a/src/cmd/compile/internal/ssa/rewriteARM64latelower.go
+++ b/src/cmd/compile/internal/ssa/rewriteARM64latelower.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/ARM64latelower.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/ARM64latelower.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteLOONG64.go b/src/cmd/compile/internal/ssa/rewriteLOONG64.go
index f6da0b7ff0..451b8313eb 100644
--- a/src/cmd/compile/internal/ssa/rewriteLOONG64.go
+++ b/src/cmd/compile/internal/ssa/rewriteLOONG64.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/LOONG64.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/LOONG64.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteMIPS.go b/src/cmd/compile/internal/ssa/rewriteMIPS.go
index 1c8d90a07e..f1e4970af8 100644
--- a/src/cmd/compile/internal/ssa/rewriteMIPS.go
+++ b/src/cmd/compile/internal/ssa/rewriteMIPS.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/MIPS.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/MIPS.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteMIPS64.go b/src/cmd/compile/internal/ssa/rewriteMIPS64.go
index c0d42b55f5..14d39babf2 100644
--- a/src/cmd/compile/internal/ssa/rewriteMIPS64.go
+++ b/src/cmd/compile/internal/ssa/rewriteMIPS64.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/MIPS64.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/MIPS64.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewritePPC64.go b/src/cmd/compile/internal/ssa/rewritePPC64.go
index bc593128da..192ec49d82 100644
--- a/src/cmd/compile/internal/ssa/rewritePPC64.go
+++ b/src/cmd/compile/internal/ssa/rewritePPC64.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/PPC64.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/PPC64.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewritePPC64latelower.go b/src/cmd/compile/internal/ssa/rewritePPC64latelower.go
index d687f59c3e..a9a14459e2 100644
--- a/src/cmd/compile/internal/ssa/rewritePPC64latelower.go
+++ b/src/cmd/compile/internal/ssa/rewritePPC64latelower.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/PPC64latelower.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/PPC64latelower.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteRISCV64.go b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
index 961230d8bb..5107b9a96f 100644
--- a/src/cmd/compile/internal/ssa/rewriteRISCV64.go
+++ b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/RISCV64.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/RISCV64.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteRISCV64latelower.go b/src/cmd/compile/internal/ssa/rewriteRISCV64latelower.go
index 04a9691b02..6dd97d65bd 100644
--- a/src/cmd/compile/internal/ssa/rewriteRISCV64latelower.go
+++ b/src/cmd/compile/internal/ssa/rewriteRISCV64latelower.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/RISCV64latelower.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/RISCV64latelower.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteS390X.go b/src/cmd/compile/internal/ssa/rewriteS390X.go
index 8f40ecdc81..597941c26d 100644
--- a/src/cmd/compile/internal/ssa/rewriteS390X.go
+++ b/src/cmd/compile/internal/ssa/rewriteS390X.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/S390X.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/S390X.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewriteWasm.go b/src/cmd/compile/internal/ssa/rewriteWasm.go
index a5be7922a0..818003c4a7 100644
--- a/src/cmd/compile/internal/ssa/rewriteWasm.go
+++ b/src/cmd/compile/internal/ssa/rewriteWasm.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/Wasm.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/Wasm.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewritedec.go b/src/cmd/compile/internal/ssa/rewritedec.go
index 1b92fb8127..5c04708b27 100644
--- a/src/cmd/compile/internal/ssa/rewritedec.go
+++ b/src/cmd/compile/internal/ssa/rewritedec.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/dec.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/dec.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewritedec64.go b/src/cmd/compile/internal/ssa/rewritedec64.go
index 26036b2f0a..901dc758c3 100644
--- a/src/cmd/compile/internal/ssa/rewritedec64.go
+++ b/src/cmd/compile/internal/ssa/rewritedec64.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/dec64.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/dec64.rules using 'go generate'; DO NOT EDIT.
package ssa
diff --git a/src/cmd/compile/internal/ssa/rewritegeneric.go b/src/cmd/compile/internal/ssa/rewritegeneric.go
index f8c64e6e06..e1c65fc286 100644
--- a/src/cmd/compile/internal/ssa/rewritegeneric.go
+++ b/src/cmd/compile/internal/ssa/rewritegeneric.go
@@ -1,5 +1,4 @@
-// Code generated from _gen/generic.rules; DO NOT EDIT.
-// generated with: cd _gen; go run .
+// Code generated from _gen/generic.rules using 'go generate'; DO NOT EDIT.
package ssa