]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/ssa: generate code via a //go:generate directive
authorDmitri Shuralyov <dmitshur@golang.org>
Sun, 15 May 2022 02:45:05 +0000 (22:45 -0400)
committerGopher Robot <gobot@golang.org>
Thu, 19 Jan 2023 22:42:34 +0000 (22:42 +0000)
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>
28 files changed:
src/cmd/compile/internal/ssa/README.md
src/cmd/compile/internal/ssa/_gen/README
src/cmd/compile/internal/ssa/_gen/allocators.go
src/cmd/compile/internal/ssa/_gen/main.go
src/cmd/compile/internal/ssa/_gen/rulegen.go
src/cmd/compile/internal/ssa/allocators.go
src/cmd/compile/internal/ssa/generate.go [new file with mode: 0644]
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/rewrite386.go
src/cmd/compile/internal/ssa/rewrite386splitload.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/cmd/compile/internal/ssa/rewriteAMD64latelower.go
src/cmd/compile/internal/ssa/rewriteAMD64splitload.go
src/cmd/compile/internal/ssa/rewriteARM.go
src/cmd/compile/internal/ssa/rewriteARM64.go
src/cmd/compile/internal/ssa/rewriteARM64latelower.go
src/cmd/compile/internal/ssa/rewriteLOONG64.go
src/cmd/compile/internal/ssa/rewriteMIPS.go
src/cmd/compile/internal/ssa/rewriteMIPS64.go
src/cmd/compile/internal/ssa/rewritePPC64.go
src/cmd/compile/internal/ssa/rewritePPC64latelower.go
src/cmd/compile/internal/ssa/rewriteRISCV64.go
src/cmd/compile/internal/ssa/rewriteRISCV64latelower.go
src/cmd/compile/internal/ssa/rewriteS390X.go
src/cmd/compile/internal/ssa/rewriteWasm.go
src/cmd/compile/internal/ssa/rewritedec.go
src/cmd/compile/internal/ssa/rewritedec64.go
src/cmd/compile/internal/ssa/rewritegeneric.go

index 27ac02b4a2ebfc0ca4daf8833842ca29b170ada8..5dc4fbee6fe3ccb72e744d4a40501c80fc9be724 100644 (file)
@@ -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
index 0c7ceba7eb953c906835595193c2bdbf4433d07c..74b81c2814330c354b84a3f35a3513e63f101b29 100644 (file)
@@ -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.
index 0f3968c485a1e8d0e477076b78a7610af499cce6..48a2598d050bbd3d4feb3383b205ba8abdcb6e3f 100644 (file)
@@ -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")
 
index 9251ba5d2de28ff6cc5bf7fb1b2d42994966b2ee..086418c7cb2e52f346cbe9a4eedb4715276d9f8e 100644 (file)
@@ -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")
 
index 80fa37a86bc9ad6d7ab57bdb64f52365c15be6ef..2840e8f458aa9144c34948c31a25c9dd848b2d54 100644 (file)
@@ -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",
index 7cd7cad1e9f2bc490ee1e65e122a4b7a262be38b..d782464c023f6c461d3f94b8861229aa712e659f 100644 (file)
@@ -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 (file)
index 0000000..74c5b31
--- /dev/null
@@ -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 .
index 407ecbb250ce2886c82d17309d17d87e839e66de..9ff0ad353e0718e482e53119550ba64ab63127d3 100644 (file)
@@ -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
 
index 0cacfe38344bae69475bb8cb59d03275821170a0..a7671e919060fe1495403b38822ee548542aea20 100644 (file)
@@ -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
 
index ef3bf262b9ba84b54f5f2637ca12a9a83a2bc992..a8bd6aaff443e3e94a9c0e155377856321f28c23 100644 (file)
@@ -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
 
index cad37d40391e990e51d69c46b1be531cd4278a33..395b2b1e6e396ee299812305d540ce159d915b69 100644 (file)
@@ -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
 
index 792cddd09e355c70d6382fcb8cb22f260699fcad..a6ba7d9e33a6356a0956b9346bad10f3fb624a08 100644 (file)
@@ -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
 
index b443f1687ec1379d1edd5f313664a05af5334f29..0dcb1b460f962732de57ad55b71f1d6e4ce386b8 100644 (file)
@@ -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
 
index 8fa2a6af1d56cd4398d1a16dab5b8880fca257cb..c31d89c1fd2e6ea52e2c3da94e7feea0819651e2 100644 (file)
@@ -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
 
index e82a49c33193e782e36729b0623c2434acd54260..88c690be1f6788f31d96251cba7a69d741b2f3f9 100644 (file)
@@ -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
 
index 49e154821ded60de7a7d6e97f0993ec77fc3cac3..09987571855fd16c946ffe5cfe19f5fb2dc13b44 100644 (file)
@@ -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
 
index f6da0b7ff0bd97711ac73560be6346bb20e5f0a4..451b8313ebdeb66fd6a1d7b92631b6f3632bb8f7 100644 (file)
@@ -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
 
index 1c8d90a07eb976dad3d6b47351f6a906f5881eb9..f1e4970af832599f287ed3cd03d626676e3648ca 100644 (file)
@@ -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
 
index c0d42b55f51ced071634c02b3df48f21ac2b0e44..14d39babf2a7987fb936c4696538a9032a72a7a0 100644 (file)
@@ -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
 
index bc593128daf4ca6d1149f2700a2e952427e79895..192ec49d824a119f9e9123f8caf9ba716c4f450b 100644 (file)
@@ -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
 
index d687f59c3e43f8ce436faf4403d1818d5e698e31..a9a14459e2acb9a2faf2747da1d6947f45f8f6a4 100644 (file)
@@ -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
 
index 961230d8bb320c8503696c62b94356f5395b92cb..5107b9a96fd481cc2d48b7736feaefe4f94c2353 100644 (file)
@@ -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
 
index 04a9691b0202a110378215da368af85334934c84..6dd97d65bdc06196fa2933f7b1f81b0bd2e7ca70 100644 (file)
@@ -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
 
index 8f40ecdc81dfc73b25c18127f624676f38d32500..597941c26d40168819361b6e3830971ca8f39a5e 100644 (file)
@@ -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
 
index a5be7922a0ea8795a3a9dc383e637459ecfce038..818003c4a75afe926d55981a52744288d171e25e 100644 (file)
@@ -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
 
index 1b92fb81276774c14c6206e23400a59e0f87e567..5c04708b277643860a82790cd9e755e348c5504f 100644 (file)
@@ -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
 
index 26036b2f0afff39372d7c907c8af46c5c3056e4f..901dc758c30cd3d1f33bbb8c50ef010195cbecbf 100644 (file)
@@ -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
 
index f8c64e6e06f1782508412e38590e3e21b1aa6b3f..e1c65fc286f226cae0ee1fe35ef429b032596a21 100644 (file)
@@ -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