The special case for ODOTPTR to handle zero-width fields is unneeded.
It is an artifact of the old backend, from which time this code dates.
The Node to SSA converter is careful to insert a nil check.
This is tested in test/nilptr2.go, among other places.
Passes toolstash-check.
Change-Id: I6c1d99f7ff5abdae9aa08ee047dc088a3fe8dc3c
Reviewed-on: https://go-review.googlesource.com/c/148828
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
n.Left = walkexpr(n.Left, init)
n.Right = walkexpr(n.Right, init)
- case ODOT:
+ case ODOT, ODOTPTR:
usefield(n)
n.Left = walkexpr(n.Left, init)
n.List.Set1(itabname(n.Type, n.Left.Type))
}
- case ODOTPTR:
- usefield(n)
- if n.Op == ODOTPTR && n.Left.Type.Elem().Width == 0 {
- // No actual copy will be generated, so emit an explicit nil check.
- n.Left = cheapexpr(n.Left, init)
-
- checknil(n.Left, init)
- }
-
- n.Left = walkexpr(n.Left, init)
-
case OLEN, OCAP:
if isRuneCount(n) {
// Replace len([]rune(string)) with runtime.countrunes(string).