mirror of
https://github.com/golang/go.git
synced 2025-10-28 15:24:13 +00:00
cmd/compile: add Type.Elem
This removes almost all direct access to Type’s heavily overloaded Type field. Mostly generated by eg, manually checked. Significant manual changes: * reflect.go's typPkg used Type indiscriminately. Use it only for specific etypes. * gen.go's visitComponents contained a usage of Type with structs. Using Type for structs no longer occurs, and the Fatal contained therein has not triggered, so it has been axed. * Scary code in cgen.go's cgen_slice is now explicitly scary. Passes toolstash -cmp. Change-Id: I2dbfb3c959da7ae239f964d83898c204affcabc6 Reviewed-on: https://go-review.googlesource.com/21331 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
76e72691a0
commit
8640b51df8
23 changed files with 226 additions and 213 deletions
|
|
@ -106,7 +106,7 @@ func algtype1(t *Type, bad **Type) int {
|
|||
return ANOEQ
|
||||
}
|
||||
|
||||
a := algtype1(t.Type, bad)
|
||||
a := algtype1(t.Elem(), bad)
|
||||
switch a {
|
||||
case AMEM:
|
||||
return AMEM
|
||||
|
|
@ -203,7 +203,7 @@ func genhash(sym *Sym, t *Type) {
|
|||
// An array of pure memory would be handled by the
|
||||
// standard algorithm, so the element type must not be
|
||||
// pure memory.
|
||||
hashel := hashfor(t.Type)
|
||||
hashel := hashfor(t.Elem())
|
||||
|
||||
n := Nod(ORANGE, nil, Nod(OIND, np, nil))
|
||||
ni := newname(Lookup("i"))
|
||||
|
|
@ -519,7 +519,7 @@ func eqmem(p *Node, q *Node, field *Sym, size int64) *Node {
|
|||
nx = typecheck(nx, Erv)
|
||||
ny = typecheck(ny, Erv)
|
||||
|
||||
fn, needsize := eqmemfunc(size, nx.Type.Type)
|
||||
fn, needsize := eqmemfunc(size, nx.Type.Elem())
|
||||
call := Nod(OCALL, fn, nil)
|
||||
call.List.Append(nx)
|
||||
call.List.Append(ny)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue