mirror of
https://github.com/golang/go
synced 2024-11-24 05:50:13 -07:00
cmd/compile: avoid an assignment of n.Type in walk
In the future, walk will probably run concurrently with SSA construction. It is possible for walk to be walking a function node that is referred to by another function undergoing SSA construction. In that case, this particular assignment to n.Type is race-y. This assignment is also not necessary; evconst does not change the type of n. Both arguments to evconst must have the same type, and at the end of evconst, n is replaced with n.Left. Remove the assignment, and add a check to ensure that its removal remains correct. Updates #15756 Change-Id: Id95faaff42d5abd76be56445d1d3e285775de8bf Reviewed-on: https://go-review.googlesource.com/38609 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
5e954047bc
commit
26be4b9113
@ -1614,9 +1614,10 @@ opswitch:
|
||||
// walk of y%1 may have replaced it by 0.
|
||||
// Check whether n with its updated args is itself now a constant.
|
||||
t := n.Type
|
||||
|
||||
evconst(n)
|
||||
n.Type = t
|
||||
if n.Type != t {
|
||||
Fatalf("evconst changed Type: %v had type %v, now %v", n, t, n.Type)
|
||||
}
|
||||
if n.Op == OLITERAL {
|
||||
n = typecheck(n, Erv)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user