aboutsummaryrefslogtreecommitdiff
path: root/test/run.go
AgeCommit message (Collapse)Author
2023-02-28cmd/dist, test: convert test/run.go runner to a cmd/go testDmitri Shuralyov
As motivated on the issue, we want to move the functionality of the run.go program to happen via a normal go test. Each .go test case in the GOROOT/test directory gets a subtest, and cmd/go's support for parallel test execution replaces run.go's own implementation thereof. The goal of this change is to have fairly minimal and readable diff while making an atomic changeover. The working directory is modified during the test execution to be GOROOT/test as it was with run.go, and most of the test struct and its run method are kept unchanged. The next CL in the stack applies further simplifications and cleanups that become viable. There's no noticeable difference in test execution time: it takes around 60-80 seconds both before and after on my machine. Test caching, which the previous runner lacked, can shorten the time significantly. For #37486. Fixes #56844. Change-Id: I209619dc9d90e7529624e49c01efeadfbeb5c9ae Reviewed-on: https://go-review.googlesource.com/c/go/+/463276 Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Austin Clements <austin@google.com> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2023-02-03cmd/compile: intrinsify math/bits/ReverseBytes{16|32|64} for ppc64/power10Archana R
This change intrinsifies ReverseBytes{16|32|64} by generating the corresponding new instructions in Power10: brh, brd and brw and adds a verification test for the same. On Power 9 and 8, the .go code performs optimally as it is. Performance improvement seen on Power10: ReverseBytes32 1.38ns ± 0% 1.18ns ± 0% -14.2 ReverseBytes64 1.52ns ± 0% 1.11ns ± 0% -26.87 ReverseBytes16 1.41ns ± 1% 1.18ns ± 0% -16.47 Change-Id: I88f127f3ab9ba24a772becc21ad90acfba324b37 Reviewed-on: https://go-review.googlesource.com/c/go/+/446675 Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
2023-01-25cmd: remove GOEXPERIMENT=nounified knobMatthew Dempsky
This CL removes the GOEXPERIMENT=nounified knob, and any conditional statements that depend on that knob. Further CLs to remove unreachable code follow this one. Updates #57410. Change-Id: I39c147e1a83601c73f8316a001705778fee64a91 Reviewed-on: https://go-review.googlesource.com/c/go/+/458615 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
2023-01-24test/codegen: accept ppc64x as alias for ppc64le and ppc64 archesPaul E. Murphy
This helps simplify the noise when adding ppc codegen tests. ppc64x is used in other places to indicate something which runs on either endian. This helps cleanup existing codegen tests which are mostly identical between endian variants. condmove tests are converted as an example. Change-Id: I2b2d98a9a1859015f62db38d62d9d5d7593435b4 Reviewed-on: https://go-review.googlesource.com/c/go/+/462895 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Paul Murphy <murp@ibm.com>
2022-11-17test: remove optimizationOffCuong Manh Le
Cl 426334 removed its only usage, and now we have gcflags_noopt. Change-Id: I3b33a8c868669deea00bf6dfcf8d81981504e293 Reviewed-on: https://go-review.googlesource.com/c/go/+/451255 Reviewed-by: Joedian Reid <joedian@golang.org> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-11-08cmd/compile: fix transitive inlining of generic functionsMatthew Dempsky
If an imported, non-generic function F transitively calls a generic function G[T], we may need to call CanInline on G[T]. While here, we can also take advantage of the fact that we know G[T] was already seen and compiled in an imported package, so we don't need to call InlineCalls or add it to typecheck.Target.Decls. This saves us from wasting compile time re-creating DUPOK symbols that we know already exist in the imported package's link objects. Fixes #56280. Change-Id: I3336786bee01616ee9f2b18908738e4ca41c8102 Reviewed-on: https://go-review.googlesource.com/c/go/+/443535 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com>
2022-10-12test: update test/run.go and some tests to use importcfgMichael Matloob
Using importcfg instead of depending on the existence of .a files for standard library packages will enable us to remove the .a files in a future cl. Change-Id: I6108384224508bc37d82fd990fc4a8649222502c Reviewed-on: https://go-review.googlesource.com/c/go/+/440222 Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-10-01test: skip inlining check in escape4.goCuong Manh Le
This is the last failed test in Unified IR, since it can inline f5 and f6 but the old frontend can not. So marking them as //go:noinline, with a TODO for re-enable once GOEXPERIMENT=nounified is gone. Fixes #53058 Change-Id: Ifbbc49c87997a53e1b323048f0067f0257655fad Reviewed-on: https://go-review.googlesource.com/c/go/+/437217 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
2022-10-01test: relax closure name matching in closure3.goCuong Manh Le
The mismatch between Unified IR and the old frontend is not about how they number the closures, but how they name them. For nested closure, the old frontend use the immediate function which contains the closure as the outer function, while Unified IR uses the outer most function as the outer for all closures. That said, what important is matching the number of closures, not their name prefix. So this CL relax the test to match both "main.func1.func2" and "main.func1.2" to satisfy both Unified IR and the old frontend. Updates #53058 Change-Id: I66ed816d1968aa68dd3089a4ea5850ba30afd75b Reviewed-on: https://go-review.googlesource.com/c/go/+/437216 Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-30test: enable issue47631.go for Unified IRCuong Manh Le
Updates #53058 Change-Id: Ieaa500bea11f26f9a039196592bea67405bdf0ad Reviewed-on: https://go-review.googlesource.com/c/go/+/437215 Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-27all: replace [0-9] with \d in regexpsTomCao New Macbook Pro
1. replace [0-9] with \d in regexps 2. replace [a-zA-Z0-9_] with \w in regexps Change-Id: I9e260538252a0c1071e76aeb1c5f885c6843a431 GitHub-Last-Rev: 286e1a4619c4bdda7f461afbd6d30b9f312c0486 GitHub-Pull-Request: golang/go#54874 Reviewed-on: https://go-review.googlesource.com/c/go/+/428435 Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@google.com>
2022-09-19test: add regress test for issue 55101Matthew Dempsky
This test case already works with GOEXPERIMENT=unified, and it never worked with Go 1.18 or Go 1.19. So this CL simply adds a regress test to make sure it continues working. Fixes #55101. Change-Id: I7e06bfdc136ce124f65cdcf02d20a1050b841d42 Reviewed-on: https://go-review.googlesource.com/c/go/+/431455 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
2022-09-07cmd/compile/internal/noder: fix type switch case vars packageMatthew Dempsky
When naming case variables, the unified frontend was using typecheck.Lookup, which uses the current package, rather than localIdent, which uses the package the variable was originally declared in. When inlining across package boundaries, this could cause the case variables to be associated with the wrong package. In practice, I don't believe this has any negative consequences, but it's inconsistent and triggered an ICE in typecheck.ClosureType, which expected all captured variables to be declared in the same package. Easy fix is to ensure case variables are declared in the correct package by using localIdent. Fixes #54912. Change-Id: I7a429c708ad95723f46a67872cb0cf0c53a6a0d6 Reviewed-on: https://go-review.googlesource.com/c/go/+/428918 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Benny Siegert <bsiegert@gmail.com>
2022-09-07test: add failing test case for inlined type switchesMatthew Dempsky
The unified frontend ICEs when inlining a function that contains a function literal, which captures both a type switch case variable and another variable. Updates #54912. Change-Id: I0e16d371ed5df48a70823beb0bf12110a5a17266 Reviewed-on: https://go-review.googlesource.com/c/go/+/428917 Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
2022-09-02go/types,types2: move notinheap tests to fixedbugs directoryCuong Manh Le
So they can be added to ignored list, since the tests now require cgo.Incomplete, which is not recognized by go/types and types2. Updates #46731 Change-Id: I9f24e3c8605424d1f5f42ae4409437198f4c1326 Reviewed-on: https://go-review.googlesource.com/c/go/+/427142 Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Bryan Mills <bcmills@google.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
2022-08-30cmd/compile: only inline method wrapper if method don't contain closuresCuong Manh Le
CL 327871 changes methodWrapper to always perform inlining after global escape analysis. However, inlining the method may reveal closures, which require walking all function bodies to decide whether to capture free variables by value or by ref. To fix it, just not doing inline if the method contains any closures. Fixes #53702 Change-Id: I4b0255b86257cc6fe7e5fafbc545cc5cff9113e1 Reviewed-on: https://go-review.googlesource.com/c/go/+/426334 Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Heschi Kreinick <heschi@google.com>
2022-08-23cmd/compile: fix reflect naming of local generic typesMatthew Dempsky
To disambiguate local types, we append a "·N" suffix to their name and then trim it off again when producing their runtime type descriptors. However, if a local type is generic, then we were further appending the type arguments after this suffix, and the code in types/fmt.go responsible for trimming didn't know to handle this. We could extend the types/fmt.go code to look for the "·N" suffix elsewhere in the type name, but this is risky because it could legitimately (albeit unlikely) appear in struct field tags. Instead, the most robust solution is to just change the mangling logic to keep the "·N" suffix at the end, where types/fmt.go can easily and reliably trim it. Note: the "·N" suffix is still visible within the type arguments list (e.g., the "·3" suffixes in nested.out), because we currently use the link strings in the type arguments list. Fixes #54456. Change-Id: Ie9beaf7e5330982f539bff57b8d48868a3674a37 Reviewed-on: https://go-review.googlesource.com/c/go/+/424901 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Than McIntosh <thanm@google.com>
2022-08-18cmd/compile: enable more inlining for unified IRMatthew Dempsky
The non-unified frontend had repeated issues with inlining and generics (#49309, #51909, #52907), which led us to substantially restrict inlining when shape types were present. However, these issues are evidently not present in unified IR's inliner, and the safety restrictions added for the non-unified frontend can simply be disabled in unified mode. Fixes #54497. Change-Id: I8e6ac9f3393c588bfaf14c6452891b9640a9d1bd Reviewed-on: https://go-review.googlesource.com/c/go/+/424775 Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com>
2022-08-15test: fix issue53702.go for noopt builderCuong Manh Le
The test requires inlining happens. Updates #53702 Change-Id: I0d93b5e29e271ace4098307b74c40c0e06d975e5 Reviewed-on: https://go-review.googlesource.com/c/go/+/423834 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Keith Randall <khr@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
2022-08-14test: add test case for issue 53702Cuong Manh Le
The issue is expected to be fixed when Unified IR is enabled by default, so adding a test to make sure thing works correctly. Updates #53702 Change-Id: Id9d7d7ca4506103df0d10785ed5ee170d69988ba Reviewed-on: https://go-review.googlesource.com/c/go/+/423434 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
2022-08-12test: remove unused code in run.gozhangjian
Change-Id: Ie2a77a9643697cfda4376db606711c09da220405 GitHub-Last-Rev: ff1cf0b9d831d626f7a8e0e80340d908ce5c32cf GitHub-Pull-Request: golang/go#53902 Reviewed-on: https://go-review.googlesource.com/c/go/+/417734 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Keith Randall <khr@google.com>
2022-08-10test: more robust detection of GOEXPERIMENT=unifiedMatthew Dempsky
`go env GOEXPERIMENT` prints what experiments are enabled relative to the baseline configuration, so it's not a very robust way to detect what experiments have been statically enabled at bootstrap time. Instead, we can check build.Default.ToolTags, which has goexperiment.* for all currently enabled experiments, independent of baseline. Change-Id: I6132deaa73b1e79ac24176ef4de5af67a507ee26 Reviewed-on: https://go-review.googlesource.com/c/go/+/422234 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: David Chase <drchase@google.com>
2022-08-09test: test method expressions promoted to derived typesMatthew Dempsky
This CL adds a test that method expressions where the receiver type is a derived type and embeds a promoted method work correctly. Change-Id: I2e7c96007b6d9e6f942dc14228970ac508ff5c15 Reviewed-on: https://go-review.googlesource.com/c/go/+/422199 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: David Chase <drchase@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-08-09test: add test for package-scope method value GCMatthew Dempsky
The Go 1.18 frontend handles package-scope generic method values by spilling the receiver value to a global temporary variable, which pins it into memory. This issue isn't present in unified IR, which uses OMETHVALUE when the receiver type is statically known. Updates #54343. Change-Id: I2c4ffeb125a3cf338f949a93b0baac75fff6cd31 Reviewed-on: https://go-review.googlesource.com/c/go/+/422198 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com>
2022-07-28[dev.unified] all: merge master (462b78f) into dev.unifiedMatthew Dempsky
Merge List: + 2022-07-27 462b78fe70 misc/cgo/test: use fewer threads in TestSetgidStress in long mode + 2022-07-27 055113ef36 math/big: check buffer lengths in GobDecode + 2022-07-27 4248146154 net: document UDPConn.ReadFromUDPAddrPort's AddrPort result more + 2022-07-26 faf4e97200 net: fix WriteMsgUDPAddrPort addr handling + 2022-07-26 caa225dd29 doc/go1.19: note that updated race syso files require GNU ld 2.26 + 2022-07-26 ceefd3a37b bytes: document that Reader.Reset affects the result of Size + 2022-07-26 3e97294663 runtime/cgo: use frame address to set g0 stack bound + 2022-07-25 24dc27a3c0 cmd/compile: fix blank label code + 2022-07-25 9fcc8b2c1e runtime: fix runtime.Breakpoint() on windows/arm64 + 2022-07-25 795a88d0c3 cmd/go: add space after comma in 'go help test' + 2022-07-25 9eb3992ddd doc/go1.19: minor fixes + 2022-07-25 dcea1ee6e3 time: clarify documentation for allowed formats and add tests to prove them + 2022-07-25 37c8112b82 internal/fuzz: fix typo in function comments + 2022-07-25 850d547d2d doc/go1.19: expand crypto release notes + 2022-07-24 64f2829c9c runtime: fix typo in function comments + 2022-07-24 2ff563a00e cmd/compile/internal/noder: correct spelling errors for instantiation + 2022-07-22 c5da4fb7ac cmd/compile: make jump table symbol local + 2022-07-22 774fa58d1d A+C: delete AUTHORS and CONTRIBUTORS + 2022-07-21 2d655fb15a unsafe: document when Sizeof/Offsetof/Alignof are not constant + 2022-07-21 076c3d7f07 net/http: remove accidental heading in Head documentation + 2022-07-21 c4a6d3048b cmd/dist: enable race detector test on S390X + 2022-07-20 244c8b0500 cmd/cgo: allow cgo to pass strings or []bytes bigger than 1<<30 + 2022-07-20 df38614bd7 test: use go tool from tree, not path + 2022-07-20 bb1749ba3b cmd/compile: improve GOAMD64=v1 violation test + 2022-07-19 176b63e711 crypto/internal/nistec,debug/gosym: fix typos Change-Id: I96e5d60039381691dffd841e58927f0afff8c544
2022-07-20test: use go tool from tree, not pathKeith Randall
Some of our tests do exec.Command("go", "tool", "compile", ...) or similar. That "go" is selected from PATH. When run.go is started from the command line (but not from all.bash), the first "go" is whatever happens to be first in the user's path (some random older version than tip). We really want all these tests to use the "go" tool from the source tree under test. Add GOROOT/bin to the front of the path to ensure that the tools we use come from the source tree under test. Change-Id: I609261a4add8cd5cb228316752d52b5499aec963 Reviewed-on: https://go-review.googlesource.com/c/go/+/418474 Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-07-19[dev.unified] all: merge master (8e1e64c) into dev.unifiedDavid Chase
Conflicts: - test/run.go Conflicts in the known-fails list, plus removed a test from the known-fails that now works. Merge List: + 2022-07-19 8e1e64c16a cmd/compile: fix mknode script + 2022-07-19 28be440d34 A+C: add Weizhi Yan + 2022-07-19 85a482fc24 runtime: revert to using the precomputed trigger for pacer calculations + 2022-07-19 ae7340ab68 CONTRIBUTORS: update for the Go 1.19 release + 2022-07-18 de8101d21b runtime: fix typos + 2022-07-18 967a3d985d cmd/compile: revert "remove -installsuffix flag" + 2022-07-18 c0c1bbde17 http: improve Get documentation + 2022-07-15 2aa473cc54 go/types, types2: correct alignment of atomic.Int64 + 2022-07-15 4651ebf961 encoding/gob: s/TestIngoreDepthLimit/TestIgnoreDepthLimit/ + 2022-07-14 dc00aed6de go/parser: skip TestParseDepthLimit for short tests + 2022-07-14 783ff7dfc4 encoding/xml: skip TestCVE202230633 for short tests + 2022-07-14 aa80228526 cmd/go/internal/modfetch: avoid duplicating path components in Git fetch errors + 2022-07-14 b9d5a25442 cmd/go: save zip sums for downloaded modules in 'go mod download' in a workspace + 2022-07-14 a906d3dd09 cmd/go: avoid re-enqueuing workspace dependencies with errors + 2022-07-14 266c70c263 doc/go1.19: add a release note for 'go list -json=SomeField' + 2022-07-13 558785a0a9 cmd/compile: remove -installsuffix flag + 2022-07-13 1355ea3045 cmd/compile: remove -importmap flag + 2022-07-13 f71f3d1b86 misc/cgo/testshared: run tests only in GOPATH mode + 2022-07-13 feada53661 misc/cgo/testcshared: don't rely on an erroneous install target in tests + 2022-07-13 c006b7ac27 runtime: clear timerModifiedEarliest when last timer is deleted + 2022-07-13 923740a8cc cmd/compile: fix type assert in dict pass + 2022-07-12 bf2ef26be3 cmd/go: in script tests, avoid checking non-main packages for staleness + 2022-07-12 5f5cae7200 cmd/go: avoid indexing GOROOT packages when the compiler is 'gccgo' + 2022-07-12 c2edb2c841 cmd/go: port TestIssue16471 to a script test and add verbose logging + 2022-07-12 9c2526e637 cmd/go/internal/modfetch/codehost: add missing newline in '# lock' log message + 2022-07-12 85486bcccb image/jpeg: increase TestLargeImageWithShortData timeout by an order of magnitude + 2022-07-12 27794c4d4a cmd/go/internal/modload: ignore disallowed errors when checking for updates + 2022-07-12 b2b8872c87 compress/gzip: fix stack exhaustion bug in Reader.Read + 2022-07-12 ac68c6c683 path/filepath: fix stack exhaustion in Glob + 2022-07-12 fa2d41d0ca io/fs: fix stack exhaustion in Glob + 2022-07-12 6fa37e98ea encoding/gob: add a depth limit for ignored fields + 2022-07-12 695be961d5 go/parser: limit recursion depth + 2022-07-12 08c46ed43d encoding/xml: use iterative Skip, rather than recursive + 2022-07-12 c4c1993fd2 encoding/xml: limit depth of nesting in unmarshal + 2022-07-12 913d05133c cmd/go: avoid spurious readdir during fsys.Walk + 2022-07-12 d3d7998756 net/http: clarify that MaxBytesReader returns *MaxBytesError + 2022-07-11 126c22a098 syscall: gofmt after CL 412114 + 2022-07-11 123a6328b7 internal/trace: don't report regions on system goroutines + 2022-07-11 846490110a runtime/race: update amd64 syso images to avoid sse4 + 2022-07-11 b75ad09cae cmd/trace: fix typo in web documentation + 2022-07-11 7510e597de cmd/go: make module index loading O(1) + 2022-07-11 b8bf820d5d cmd/nm: don't rely on an erroneous install target in tests + 2022-07-11 ad641e8521 misc/cgo/testcarchive: don't rely on an erroneous install target in tests + 2022-07-11 bf5898ef53 net/url: use EscapedPath for url.JoinPath + 2022-07-11 398dcd1cf0 database/sql: make TestTxContextWaitNoDiscard test more robust + 2022-07-11 f956941b0f cmd/go: use package index for std in load.loadPackageData + 2022-07-11 59ab6f351a net/http: remove Content-Encoding in writeNotModified + 2022-07-08 c1a4e0fe01 cmd/compile: fix libfuzzer instrumentation line number + 2022-07-08 5c1a13e7a4 cmd/go: avoid setting variables for '/' and ':' in TestScript subprocess environments + 2022-07-08 180bcad33d net/http: wait for listeners to exit in Server.Close and Shutdown + 2022-07-08 14abe8aa73 cmd/compile: don't convert to interface{} for un-comparable types in generic switch + 2022-07-07 1ebc983000 runtime: overestimate the amount of allocated memory in heapLive + 2022-07-07 c177d9d98a crypto/x509: restrict CRL number to <=20 octets + 2022-07-07 486fc01770 crypto/x509: correctly parse CRL entry extensions + 2022-07-07 8ac58de185 crypto/x509: populate Number and AKI of parsed CRLs + 2022-07-07 0c7fcf6bd1 cmd/link: explicitly disable PIE for windows/amd64 -race mode + 2022-07-07 eaf2125654 cmd/go: default to "exe" build mode for windows -race + 2022-07-06 1243ec9c17 cmd/compile: only check implicit dots for method call enabled by a type bound + 2022-07-06 c391156f96 cmd/go: set up git identity for build_buildvcs_auto.txt + 2022-07-06 2acd3646fc cmd/compile: rework induction variable detector + 2022-07-06 53a4152d47 os/exec: clarify that Wait must be called + 2022-07-06 177306f630 cmd/internal/notsha256: add purego tag as needed + 2022-07-06 f4755fc733 cmd/dist: use purego tag when building the bootstrap binaries + 2022-07-06 4484c30f78 misc/cgo/test: make TestSetgidStress cheaper + 2022-07-06 2007599dc8 test: recognize new gofrontend error message + 2022-07-05 d602380f58 cmd/compile: drop "buildcfg" from no instrument packages + 2022-07-05 c111091071 cmd/go: make module@nonexistentversion failures reusable + 2022-07-05 5f305ae8e5 cmd/go: add -reuse flag to make proxy invocations more efficient + 2022-07-05 84e091eef0 cmd/go: record origin metadata during module download + 2022-07-04 ceda93ed67 build/constraint: update doc to mention a feature added in Go 1.17 + 2022-07-04 3cf79d9610 runtime: pass correct string to exits on Plan 9 + 2022-07-01 e822b1e26e net/http: omit invalid header value from error message + 2022-07-01 4a2a3bca18 cmd/go, go/build: clarify build constraint docs + 2022-07-01 9a4d5357f4 flag: highlight support for double dashes in docs + 2022-07-01 c847a2c9f0 go/types, types2: document that exported predicates are unspecified for invalid type arguments + 2022-06-30 405c269b85 go/types, types2: re-enable a couple of commented out tests + 2022-06-30 aad9382e59 go/doc/comment: support links in lists in comments + 2022-06-30 af725f4286 os: fix a typo in path_windows.go Change-Id: I381728322188aca0bfa81a946d6aedda8c07903c
2022-07-06cmd/compile: only check implicit dots for method call enabled by a type boundCuong Manh Le
Fixes #53419 Change-Id: Ibad64f5c4af2112deeb0a9ecc9c589b17594bd05 Reviewed-on: https://go-review.googlesource.com/c/go/+/414836 Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
2022-06-30[dev.unified] all: merge master (993c387) into dev.unifiedMatthew Dempsky
Conflicts: - test/run.go: textual conflict in 1.18 known failures list Merge List: + 2022-06-30 993c387032 os: simplify deadline fluctuation tests + 2022-06-30 4914e4e334 cmd/go/internal/modindex: remove spurious field from index_format documentation + 2022-06-30 981d5947af cmd/go: include module root in package index key + 2022-06-30 84db00ffd1 cmd/go: add a 'sleep' command for script tests + 2022-06-30 31b8c23c57 cmd/compile: fix prove pass when upper condition is <= maxint + 2022-06-30 17083a2fdf spec: retitle section on "Assignments" to "Assignment statements" + 2022-06-30 4d95fe6653 test: add regress test for #53619 + 2022-06-29 6a7c64fde5 debug/pe: add IMAGE_FILE_MACHINE_LOONGARCH{64,32} + 2022-06-29 b2cc0fecc2 net/http: preserve nil values in Header.Clone + 2022-06-29 64ef16e777 cmd/internal/obj/arm64: save LR and SP in one instruction for small frames + 2022-06-29 0750107074 go/token: use atomics not Mutex for last file cache + 2022-06-29 e5017a93fc net/http: don't strip whitespace from Transfer-Encoding headers + 2022-06-29 20760cff00 runtime: add race annotations to cbs.lock + 2022-06-29 e6c0546c54 crypto/x509/pkix: move crl deprecation message + 2022-06-29 3562977b6f cmd/internal/obj/mips,s390x,riscv: save LR after decrementing SP + 2022-06-29 d6481d5b96 runtime: add race annotations to metricsSema + 2022-06-29 bd1783e812 crypto/x509: improve RevocationList documentation + 2022-06-28 160414ca6a cmd/internal/obj/arm64: fix BITCON constant printing error + 2022-06-28 a30f434667 cmd/go: pass --no-decorate when listing git tags for a commit + 2022-06-28 3580ef9d64 os/exec: on Windows, suppress ErrDot if the implicit path matches the explicit one + 2022-06-28 34f3ac5f16 cmd/compile: fix generic inter-inter comparisons from value switch statements + 2022-06-28 7df0a002e6 cmd/go/internal/modfetch: cache latest revinfo in Versions func + 2022-06-28 d5bf9604aa test: add more tests for const decls with ommitted RHS expressions + 2022-06-28 533082d1a0 test: add test that gofrontend failed to compile + 2022-06-28 47e792e22e runtime: clean up unused function gosave on loong64 + 2022-06-28 a6e5be0d30 cmd/go: omit build metadata that may contain system paths when -trimpath is set + 2022-06-28 d3ffff2790 api: correct debug/pe issue number for Go 1.19 changes + 2022-06-28 751cae8855 cmd/go/internal/modload: fix doc comment + 2022-06-28 85d7bab91d go/printer: report allocs and set bytes + 2022-06-27 3af5280c00 net: really skip Windows PTR tests if we say we are skipping them + 2022-06-27 a42573c2f1 net: avoid darwin/arm64 platform bug in TestCloseWrite + 2022-06-27 68289f39f0 html/template: fix typo in content_test.go + 2022-06-27 c3bea70d9b cmd/link: link against libsynchronization.a for -race on windows + 2022-06-27 f093cf90bf test: add test that caused gofrontend crash + 2022-06-27 155612a9b9 test: add test that caused gofrontend crash + 2022-06-27 a861eee51a cmd/go: compile runtime/internal/syscall as a runtime package + 2022-06-27 8f9bfa9b7b crypto/internal/boring: factor Cache into crypto/internal/boring/bcache + 2022-06-26 351e0f4083 runtime: avoid fma in mkfastlog2table + 2022-06-26 416c953960 test: add test that gofrontend gets wrong + 2022-06-26 666d736ecb cmd/compile: do branch/label checks only once + 2022-06-26 6b309be7ab cmd/compile/internal/syntax: check fallthrough in CheckBranches mode + 2022-06-25 1821639b57 runtime: mark string comparison hooks as no split + 2022-06-25 3b594b9255 io: clarify SeekEnd offset value + 2022-06-25 4f45ec5963 cmd/go: prepend builtin prolog when checking for preamble errors + 2022-06-24 41e1d9075e strconv: avoid panic on invalid call to FormatFloat + 2022-06-24 bd4753905d internal/trace: add Go 1.19 test data + 2022-06-24 6b6c64b1cc cmd/internal/archive: don't rely on an erroneous install target in tests Change-Id: Ib43126833bf534c311730d4283d4d25381cd3428
2022-06-29[dev.unified] test: add regress test for generic select statementsMatthew Dempsky
The Go 1.18 frontend ICEs on select case clauses that involve an implicit conversion. Change-Id: I1c0865bf97d8b0a8fbddb0da43333e909df0d38a Reviewed-on: https://go-review.googlesource.com/c/go/+/414878 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: David Chase <drchase@google.com>
2022-06-28cmd/compile: fix generic inter-inter comparisons from value switch statementsCuong Manh Le
If value is a non-empty interface and has shape, we still need to convert it to an interface{} first. Fixes #53477 Change-Id: I516063ba4429a6cc24c483758387ec13815fc63e Reviewed-on: https://go-review.googlesource.com/c/go/+/414834 Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
2022-06-24[dev.unified] all: merge master (5a1c5b8) into dev.unifiedMatthew Dempsky
Conflicts: - test/run.go Textual conflict adding to the known failures list for the nounified frontend. Merge List: + 2022-06-24 5a1c5b8ae7 cmd/go: add per-package indexing for modules outside mod cache + 2022-06-24 b9c4d94fdb cmd/go/internal/list: update help info with Deprecated field + 2022-06-24 73475ef035 go/types, types2: print qualified object names in cycle errors + 2022-06-24 3e58ef6cc7 go/types, types2: better errors for == when type sets are empty + 2022-06-24 d38f1d13fa doc/go1.19: Linux race detector now requires glibc 2.17 + 2022-06-23 de5329f1de debug/dwarf: handle malformed line table with bad program offset + 2022-06-23 15605ca827 embed: document additional file name restrictions + 2022-06-22 2e773a3894 test: add test that causes gofrontend crash + 2022-06-22 ff17b7d0d4 cmd/compile: don't use dictionary convert to shaped empty interface + 2022-06-22 2a3b467d5f cmd/go: make module .zip files group/world readable + 2022-06-22 bdab4cf47a cmd/go, cmd/link: support failure to create _cgo_import.go + 2022-06-22 aca37d16a5 cmd/go: avoid indexing modules in GOROOT + 2022-06-22 111cdb5848 all: update to current golang.org/x/sys revision + 2022-06-22 4045b1bc3f cmd/compile: fix assert condition in generic method call + 2022-06-22 6bad7e8243 compress/gzip: always close bodyReader in Example_compressingReader + 2022-06-22 606c6c371a encoding/xml: check nil pointer in DecodeElement + 2022-06-22 f571518139 cmd/cgo: dont override declared struct type + 2022-06-22 92c9b81447 net: don't set netGo = true on Windows with no cgo + 2022-06-22 be0b2a393a cmd/trace: add basic documentation to main page + 2022-06-22 b004c739b5 go/types, types2: fix parameter order dependence in type inference + 2022-06-21 f2c7e78592 spec: document operations which accept []byte|string constrained types + 2022-06-21 ab422f2749 runtime/trace: ignore fallback stacks in test + 2022-06-21 66685fb7dd doc/go1.19: use correct link to sync/atomic docs + 2022-06-21 4b236b45d0 runtime: convert flaky semaphore linearity test into benchmark + 2022-06-21 530511bacc cmd/go/internal/modindex: avoid walking modules when not needed + 2022-06-21 c2d373d5d1 cmd/compile: allow 128-bit values to be spilled + 2022-06-21 19ed442807 test: add regress test for #53477 + 2022-06-20 3fcbfb07a8 doc/go1.19: fix HTML validation issues + 2022-06-18 527ace0ffa cmd/compile: skip substituting closures in unsafe builtins arguments + 2022-06-17 ec58e3f327 test: add regress test for #53419 + 2022-06-17 103cc661f1 cmd/go/internal/modfetch: prevent duplicate hashes in go.sum + 2022-06-17 d42a48828f sync: add more notes about Cond behavior + 2022-06-17 9e2f289754 cmd/go/internal/work: log clearer detail for subprocess errors in (*Builder).toolID + 2022-06-17 dd2d00f9d5 net: fix flaky *TimeoutMustNotReturn tests + 2022-06-17 6c25ba624f go/token: delete unused File.set field + 2022-06-16 9068c6844d cmd/dist: add package . to 'go test' commands + 2022-06-16 7bad61554e runtime: write much more direct test for semaphore waiter scalability + 2022-06-16 f38a580a51 cmd/go: add more tracing Change-Id: I912c5879165e03f4d7f8ac3ee9241d50fc92a419
2022-06-21test: add regress test for #53477Matthew Dempsky
This test already passes for GOEXPERIMENT=unified; add regress test to ensure it stays that way. Updates #53477. Change-Id: Ib7aa7428260595077052207899edcc044a6ab1c8 Reviewed-on: https://go-review.googlesource.com/c/go/+/413394 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com> Reviewed-by: David Chase <drchase@google.com>
2022-06-17test: add regress test for #53419Matthew Dempsky
This currently works with GOEXPERIMENT=unified. Add a regress test to make sure it stays that way. Updates #53419. Change-Id: I2ea1f9039c59807fbd497d69a0420771f8d6d035 Reviewed-on: https://go-review.googlesource.com/c/go/+/413014 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-06-15[dev.unified] test: extract different inline test between unified and ↵Cuong Manh Le
non-unified Unified IR records the inline nodes position right at the position of the inline call, while the old inliner always records at the position of the original nodes. We want to keep non-unified working up through go 1.20, thus this CL extract the inline test case that is different in Unified IR and the old inliner. Updates #53058 Change-Id: I14b0ee99fe797d34f27cfec068982790c64ac263 Reviewed-on: https://go-review.googlesource.com/c/go/+/411935 Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2022-06-10[dev.unified] test: add regress tests for #53276 and #53328Matthew Dempsky
These two tests fail with the 1.18 compiler frontend, because of incomplete dictionary support. This CL adds the tests for Unified IR, which currently handles them correctly, to make sure it doesn't repeat the same errors. Updates #53276. Updates #53328. Change-Id: I9f436495d28f2bc5707a17bd2527c86abacf91f1 Reviewed-on: https://go-review.googlesource.com/c/go/+/411695 Auto-Submit: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
2022-06-09[dev.unified] test: relax issue7921.go diagnostic messageCuong Manh Le
For constants literal, iimport/iexport read/write them as basic literal nodes. So they are printed in diagnostic message as Go syntax. So "foo" will be reported as string("foo"). Unified IR read/write the raw expression as string value, and when printed in diagnostic, the string value is written out exactly as-is, so "foo" will be written as "foo". Thus, this CL relax the test in issue7921.go to match the string value only. Updates #53058 Change-Id: I6fcf4fdcfc4b3be91cb53b081c48bd57186d8f35 Reviewed-on: https://go-review.googlesource.com/c/go/+/410795 Reviewed-by: Cherry Mui <cherryyz@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Keith Randall <khr@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
2022-06-09[dev.unified] cmd/compile: set base.Pos when process assignDef in Unified IRCuong Manh Le
CL 410343 changes Unified IR to visit LHS before RHS/X in assign/for statement. Thus, it needs to set base.Pos before processing assignee expression, so invalid type can be reported with correct position. Updates #53058 Change-Id: Ic9f60cbf35c8bd71cb391e806396572c37811af7 Reviewed-on: https://go-review.googlesource.com/c/go/+/410794 Reviewed-by: Cherry Mui <cherryyz@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-06-09[dev.unified] cmd/compile: fix unified IR don't report type size too large errorCuong Manh Le
For error reported during type size calculation, base.Pos needs to be set, otherwise, the compiler will treat them as the same error and only report once. Old typechecker and irgen all set base.Pos before processing types, this CL do the same thing for unified IR. Updates #53058 Change-Id: I686984ffe4aca3e8b14d2103018c8d3c7d71fb02 Reviewed-on: https://go-review.googlesource.com/c/go/+/410345 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com>
2022-06-08[dev.unified] cmd/compile: restore Unified IR linkname pragma diagnosticCuong Manh Le
CL 333109 restore the diagnostic for irgen, now it's safe to restore for Unified IR, too. Updates #53058 Change-Id: I467902c0e9fa451aaa78cf0813231f14d9d7a3a0 Reviewed-on: https://go-review.googlesource.com/c/go/+/410346 Reviewed-by: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com>
2022-06-06[dev.unified] cmd/compile: export/import implicit attribute for conversion exprsCuong Manh Le
So they can be formatted more presicely, and make it easier in the transition to Unified IR. Updates #53058 Change-Id: I8b5a46db05a2e2822289458995b8653f0a3ffbbe Reviewed-on: https://go-review.googlesource.com/c/go/+/410594 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
2022-05-20misc, test: fix test error for loong64Xiaodong Liu
Contributors to the loong64 port are: Weining Lu <luweining@loongson.cn> Lei Wang <wanglei@loongson.cn> Lingqin Gong <gonglingqin@loongson.cn> Xiaolin Zhao <zhaoxiaolin@loongson.cn> Meidan Li <limeidan@loongson.cn> Xiaojuan Zhai <zhaixiaojuan@loongson.cn> Qiyuan Pu <puqiyuan@loongson.cn> Guoqi Chen <chenguoqi@loongson.cn> This port has been updated to Go 1.15.6: https://github.com/loongson/go Updates #46229 Change-Id: I6760b4a7e51646773cd0f48baa1baba01b213b7d Reviewed-on: https://go-review.googlesource.com/c/go/+/342325 Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com>
2022-05-17cmd/compile: skip exporting generic functions for -buildmode=pluginMatthew Dempsky
Generic functions require instantiation, which package plugin doesn't support, and likely never will. So instead, we can just skip writing out any generic functions, which avoids an ICE in the plugin generation code. This issue doesn't affect GOEXPERIMENT=unified, because it avoids leaking any non-instantiated types/functions to the rest of the compiler backend. Fixes #52937. Change-Id: Ie35529c5c241e46b77fcb5b8cca48bb99ce7bfcb Reviewed-on: https://go-review.googlesource.com/c/go/+/406358 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com>
2022-05-11cmd/asm: require -p flagCherry Mui
CL 391014 requires the compiler to be invoked with the -p flag, to specify the package path. Later, CL 394217 makes the compiler to produce an unlinkable object file, so "go tool compile x.go" can still be used on the command line. This CL does the same for the assembler, requiring -p, otherwise generating an unlinkable object. No special case for the main package, as the main package cannot be only assembly code, and there is no way to tell if it is the main package from an assembly file. Now we guarantee that we always have an expanded package path in the object file. A later CL will delete the name expansion code in the linker. Change-Id: I8c10661aaea2ff794614924ead958d80e7e2487d Reviewed-on: https://go-review.googlesource.com/c/go/+/404298 Run-TryBot: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2022-05-03go/types,types2: delay the check for conflicting struct field namesRobert Findley
In #52529, we observed that checking types for duplicate fields and methods during method collection can result in incorrect early expansion of the base type. Fix this by delaying the check for duplicate fields. Notably, we can't delay the check for duplicate methods as we must preserve the invariant that added method names are unique. After this change, it may be possible in the presence of errors to have a type-checked type containing a method name that conflicts with a field name. With the previous logic conflicting methods would have been skipped. This is a change in behavior, but only for invalid code. Preserving the existing behavior would likely require delaying method collection, which could have more significant consequences. As a result of this change, the compiler test fixedbugs/issue28268.go started passing with types2, being previously marked as broken. The fix was not actually related to the duplicate method error, but rather the fact that we stopped reporting redundant errors on the calls to x.b() and x.E(), because they are now (valid!) methods. Fixes #52529 Change-Id: I850ce85c6ba76d79544f46bfd3deb8538d8c7d00 Reviewed-on: https://go-review.googlesource.com/c/go/+/403455 Reviewed-by: Robert Griesemer <gri@google.com> Run-TryBot: Robert Findley <rfindley@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-04-12test: add //go:build support to run.goMatthew Dempsky
gofmt is rewriting +build comments into //go:build anyway, so update the test script to support both. Change-Id: Ia6d950cfaa2fca9f184b8b2d3625a551bff88dde Reviewed-on: https://go-review.googlesource.com/c/go/+/399794 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com>
2022-03-31test: update comments in run.go (cleanup)Robert Griesemer
The -G compiler option doesn't exist anymore. Update some variable names and comments to reflect the new reality. Change-Id: I227e9c59a01615c3a40c3869102e8045cb012980 Reviewed-on: https://go-review.googlesource.com/c/go/+/397254 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2022-03-24test: compile source files as if from "test" moduleMatthew Dempsky
This CL updates test/run.go to compile xxx.dir/x.go with a package path of "test/x" instead of just "x". This prevents collisions with standard library packages. It also requires updating a handful of tests to account for the updated package paths. Fixes #25693. Change-Id: I49208c56ab3cb229ed667d547cd6e004d2175fcf Reviewed-on: https://go-review.googlesource.com/c/go/+/395258 Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-03-09cmd/compile: require -p flagRuss Cox
The -p flag specifies the import path of the package being compiled. This CL makes it required when invoking the compiler and adjusts tests that invoke the compiler directly to conform to this new requirement. The go command already passes the flag, so it is unmodified in this CL. It is expected that any other Go build systems also already pass -p, or else they will need to arrange to do so before updating to Go 1.19. Of particular note, Bazel already does for rules with an importpath= attribute, which includes all Gazelle-generated rules. There is more cleanup possible now in cmd/compile, cmd/link, and other consumers of Go object files, but that is left to future CLs. Additional historical background follows but can be ignored. Long ago, before the go command, or modules, or any kind of versioning, symbols in Go archive files were named using just the package name, so that for example func F in math/rand and func F in crypto/rand would both be the object file symbol 'rand.F'. This led to collisions even in small source trees, which made certain packages unusable in the presence of other packages and generally was a problem for Go's goal of scaling to very large source trees. Fixing this problem required changing from package names to import paths in symbol names, which was mostly straightforward. One wrinkle, though, is that the compiler did not know the import path of the package being compiled; it only knew the package name. At the time, there was no go command, just Makefiles that people had invoking 6g (now “go tool compile”) and then copying the resulting object file to an importable location. That is, everyone had a custom build setup for Go, because there was no standard one. So it was not particularly attractive to change how the compiler was invoked, since that would break approximately every Go user at the time. Instead, we arranged for the compiler to emit, and other tools reading object files to recognize, a special import path (the empty string, it turned out) denoting “the import path of this object file”. This worked well enough at the time and maintained complete command-line compatibility with existing Go usage. The changes implementing this transition can be found by searching the Git history for “package global name space”, which is what they eliminated. In particular, CL 190076 (a6736fa4), CL 186263 (758f2bc5), CL 193080 (1cecac81), CL 194053 (19126320), and CL 194071 (531e6b77) did the bulk of this transformation in January 2010. Later, in September 2011, we added the -p flag to the compiler for diagnostic purposes. The problem was that it was easy to create import cycles, especially in tests, and these could not be diagnosed until link time. You'd really want the compiler to diagnose these, for example if the compilation of package sort noticed it was importing a package that itself imported "sort". But the compilation of package sort didn't know its own import path, and so it could not tell whether it had found itself as a transitive dependency. Adding the -p flag solved this problem, and its use was optional, since the linker would still diagnose the import cycle in builds that had not updated to start passing -p. This was CL 4972057 (1e480cd1). There was still no go command at this point, but when we introduced the go command we made it pass -p, which it has for many years at this point. Over time, parts of the compiler began to depend on the presence of the -p flag for various reasonable purposes. For example: In CL 6497074 (041fc8bf; Oct 2012), the race detector used -p to detect packages that should not have race annotations, such as runtime/race and sync/atomic. In CL 13367052 (7276c02b; Sep 2013), a bug fix used -p to detect the compilation of package reflect. In CL 30539 (8aadcc55; Oct 2016), the compiler started using -p to identify package math, to be able to intrinsify calls to Sqrt inside that package. In CL 61019 (9daee931; Sep 2017), CL 71430 (2c1d2e06; Oct 2017), and later related CLs, the compiler started using the -p value when creating various DWARF debugging information. In CL 174657 (cc5eaf93; May 2019), the compiler started writing symbols without the magic empty string whenever -p was used, to reduce the amount of work required in the linker. In CL 179861 (dde7c770; Jun 2019), the compiler made the second argument to //go:linkname optional when -p is used, because in that case the compiler can derive an appropriate default. There are more examples. Today it is impossible to compile the Go standard library without using -p, and DWARF debug information is incomplete without using -p. All known Go build systems pass -p. In particular, the go command does, which is what nearly all Go developers invoke to build Go code. And Bazel does, for go_library rules that set the importpath attribute, which is all rules generated by Gazelle. Gccgo has an equivalent of -p and has required its use in order to disambiguate packages with the same name but different import paths since 2010. On top of all this, various parts of code generation for generics are made more complicated by needing to cope with the case where -p is not specified, even though it's essentially always specified. In summary, the current state is: - Use of the -p flag with cmd/compile is required for building the standard library, and for complete DWARF information, and to enable certain linker speedups. - The go command and Bazel, which we expect account for just about 100% of Go builds, both invoke cmd/compile with -p. - The code in cmd/compile to support builds without -p is complex and has become more complex with generics, but it is almost always dead code and therefore not worth maintaining. - Gccgo already requires its equivalent of -p in any build where two packages have the same name. All this supports the change in this CL, which makes -p required and adjusts tests that invoke cmd/compile to add -p appropriately. Future CLs will be able to remove all the code dealing with the possibility of -p not having been specified. Change-Id: I6b95b9d4cffe59c7bac82eb273ef6c4a67bb0e43 Reviewed-on: https://go-review.googlesource.com/c/go/+/391014 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2022-03-07test: add test case for #51521Matthew Dempsky
The test case is already working with unified IR, so add it to make sure we don't regress while finishing unified IR's support for dictionaries. Updates #51521. Change-Id: Ib7c8bf9612d30cd552e8e631fd0d487dcb177f14 Reviewed-on: https://go-review.googlesource.com/c/go/+/390356 Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>