]> Cypherpunks.ru repositories - gostls13.git/commit
[dev.regabi] cmd/compile: replace evconst with non-mutating version
authorRuss Cox <rsc@golang.org>
Tue, 24 Nov 2020 14:37:54 +0000 (09:37 -0500)
committerRuss Cox <rsc@golang.org>
Tue, 24 Nov 2020 20:58:42 +0000 (20:58 +0000)
commit6826287c6b1ff2e3f23611472a9d81ac5e3aa89a
tree64353082e6eccf7fa86bdad9404a1030bd44ff60
parentc22bc745c3b822cdf6da0ea2f9b5cac858e5a5ac
[dev.regabi] cmd/compile: replace evconst with non-mutating version

evconst is one of the largest sources of Op rewrites,
which prevent separating different kinds of nodes
(in this case, arithmetic nodes and OLITERAL nodes).

The change in swt.go is necessary because otherwise
the syntax graph ends up containing that OLEN expression
multiple times, which violates the invariant that it's a tree
except for ONAME, OLITERAL, and OTYPE nodes.
(Before, the OLEN was overwritten by an OLITERAL, so the
invariant still held, but now that we don't overwrite it,
we need a different copy for each instance.)

Passes toolstash -cmp.

Change-Id: Ia004774ab6852fb384805d0f9f9f234b40842811
Reviewed-on: https://go-review.googlesource.com/c/go/+/272869
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/const.go
src/cmd/compile/internal/gc/swt.go
src/cmd/compile/internal/gc/typecheck.go
src/cmd/compile/internal/gc/walk.go