Commit 62e5215a authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/compile: merge TPTR32 and TPTR64 as TPTR

Change-Id: I0490098a7235458c5aede1135426a9f19f8584a7
Reviewed-on: https://go-review.googlesource.com/c/76312
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
parent d397d4bf
...@@ -102,7 +102,7 @@ func algtype1(t *types.Type) (AlgKind, *types.Type) { ...@@ -102,7 +102,7 @@ func algtype1(t *types.Type) (AlgKind, *types.Type) {
case TINT8, TUINT8, TINT16, TUINT16, case TINT8, TUINT8, TINT16, TUINT16,
TINT32, TUINT32, TINT64, TUINT64, TINT32, TUINT32, TINT64, TUINT64,
TINT, TUINT, TUINTPTR, TINT, TUINT, TUINTPTR,
TBOOL, TPTR32, TPTR64, TBOOL, TPTR,
TCHAN, TUNSAFEPTR: TCHAN, TUNSAFEPTR:
return AMEM, nil return AMEM, nil
......
...@@ -250,12 +250,8 @@ func dowidth(t *types.Type) { ...@@ -250,12 +250,8 @@ func dowidth(t *types.Type) {
w = 16 w = 16
t.Align = uint8(Widthreg) t.Align = uint8(Widthreg)
case TPTR32: case TPTR:
w = 4 w = int64(Widthptr)
checkwidth(t.Elem())
case TPTR64:
w = 8
checkwidth(t.Elem()) checkwidth(t.Elem())
case TUNSAFEPTR: case TUNSAFEPTR:
......
...@@ -43,7 +43,7 @@ func (p *exporter) markType(t *types.Type) { ...@@ -43,7 +43,7 @@ func (p *exporter) markType(t *types.Type) {
// the user already needs some way to construct values of // the user already needs some way to construct values of
// those types. // those types.
switch t.Etype { switch t.Etype {
case TPTR32, TPTR64, TARRAY, TSLICE, TCHAN: case TPTR, TARRAY, TSLICE, TCHAN:
// TODO(mdempsky): Skip marking element type for // TODO(mdempsky): Skip marking element type for
// send-only channels? // send-only channels?
p.markType(t.Elem()) p.markType(t.Elem())
......
...@@ -347,7 +347,7 @@ func convlit1(n *Node, t *types.Type, explicit bool, reuse canReuseNode) *Node { ...@@ -347,7 +347,7 @@ func convlit1(n *Node, t *types.Type, explicit bool, reuse canReuseNode) *Node {
case TARRAY: case TARRAY:
goto bad goto bad
case TPTR32, TPTR64, TUNSAFEPTR: case TPTR, TUNSAFEPTR:
n.SetVal(Val{new(Mpint)}) n.SetVal(Val{new(Mpint)})
case TCHAN, TFUNC, TINTER, TMAP, TSLICE: case TCHAN, TFUNC, TINTER, TMAP, TSLICE:
...@@ -1482,7 +1482,7 @@ func smallintconst(n *Node) bool { ...@@ -1482,7 +1482,7 @@ func smallintconst(n *Node) bool {
TBOOL: TBOOL:
return true return true
case TIDEAL, TINT64, TUINT64, TPTR32, TPTR64: case TIDEAL, TINT64, TUINT64, TPTR:
v, ok := n.Val().U.(*Mpint) v, ok := n.Val().U.(*Mpint)
if ok && v.Cmp(minintval[TINT32]) > 0 && v.Cmp(maxintval[TINT32]) < 0 { if ok && v.Cmp(minintval[TINT32]) > 0 && v.Cmp(maxintval[TINT32]) < 0 {
return true return true
......
...@@ -1507,7 +1507,7 @@ func (e *EscState) addDereference(n *Node) *Node { ...@@ -1507,7 +1507,7 @@ func (e *EscState) addDereference(n *Node) *Node {
e.nodeEscState(ind).Loopdepth = e.nodeEscState(n).Loopdepth e.nodeEscState(ind).Loopdepth = e.nodeEscState(n).Loopdepth
ind.Pos = n.Pos ind.Pos = n.Pos
t := n.Type t := n.Type
if t.IsKind(types.Tptr) || t.IsSlice() { if t.IsPtr() || t.IsSlice() {
// This should model our own sloppy use of OIND to encode // This should model our own sloppy use of OIND to encode
// decreasing levels of indirection; i.e., "indirecting" a slice // decreasing levels of indirection; i.e., "indirecting" a slice
// yields the type of an element. // yields the type of an element.
......
...@@ -697,7 +697,7 @@ func typefmt(t *types.Type, flag FmtFlag, mode fmtMode, depth int) string { ...@@ -697,7 +697,7 @@ func typefmt(t *types.Type, flag FmtFlag, mode fmtMode, depth int) string {
} }
switch t.Etype { switch t.Etype {
case TPTR32, TPTR64: case TPTR:
switch mode { switch mode {
case FTypeId, FTypeIdName: case FTypeId, FTypeIdName:
if flag&FmtShort != 0 { if flag&FmtShort != 0 {
......
...@@ -617,7 +617,7 @@ func (w *exportWriter) doTyp(t *types.Type) { ...@@ -617,7 +617,7 @@ func (w *exportWriter) doTyp(t *types.Type) {
} }
switch t.Etype { switch t.Etype {
case TPTR32, TPTR64: case TPTR:
w.startType(pointerType) w.startType(pointerType)
w.typ(t.Elem()) w.typ(t.Elem())
...@@ -743,7 +743,7 @@ func constTypeOf(typ *types.Type) Ctype { ...@@ -743,7 +743,7 @@ func constTypeOf(typ *types.Type) Ctype {
return CTSTR return CTSTR
case TINT, TINT8, TINT16, TINT32, TINT64, case TINT, TINT8, TINT16, TINT32, TINT64,
TUINT, TUINT8, TUINT16, TUINT32, TUINT64, TUINTPTR, TUINT, TUINT8, TUINT16, TUINT32, TUINT64, TUINTPTR,
TPTR32, TPTR64, TUNSAFEPTR: TPTR, TUNSAFEPTR:
return CTINT return CTINT
case TFLOAT32, TFLOAT64: case TFLOAT32, TFLOAT64:
return CTFLT return CTFLT
......
...@@ -20,7 +20,7 @@ func typeWithoutPointers() *types.Type { ...@@ -20,7 +20,7 @@ func typeWithoutPointers() *types.Type {
func typeWithPointers() *types.Type { func typeWithPointers() *types.Type {
t := types.New(TSTRUCT) t := types.New(TSTRUCT)
f := &types.Field{Type: types.New(TPTR64)} f := &types.Field{Type: types.New(TPTR)}
t.SetFields([]*types.Field{f}) t.SetFields([]*types.Field{f})
return t return t
} }
......
...@@ -534,7 +534,7 @@ func onebitwalktype1(t *types.Type, off int64, bv bvec) { ...@@ -534,7 +534,7 @@ func onebitwalktype1(t *types.Type, off int64, bv bvec) {
TINT, TUINT, TUINTPTR, TBOOL, TINT, TUINT, TUINTPTR, TBOOL,
TFLOAT32, TFLOAT64, TCOMPLEX64, TCOMPLEX128: TFLOAT32, TFLOAT64, TCOMPLEX64, TCOMPLEX128:
case TPTR32, TPTR64, TUNSAFEPTR, TFUNC, TCHAN, TMAP: case TPTR, TUNSAFEPTR, TFUNC, TCHAN, TMAP:
if off&int64(Widthptr-1) != 0 { if off&int64(Widthptr-1) != 0 {
Fatalf("onebitwalktype1: invalid alignment, %v", t) Fatalf("onebitwalktype1: invalid alignment, %v", t)
} }
...@@ -1163,8 +1163,7 @@ func clobberWalk(b *ssa.Block, v *Node, offset int64, t *types.Type) { ...@@ -1163,8 +1163,7 @@ func clobberWalk(b *ssa.Block, v *Node, offset int64, t *types.Type) {
return return
} }
switch t.Etype { switch t.Etype {
case TPTR32, case TPTR,
TPTR64,
TUNSAFEPTR, TUNSAFEPTR,
TFUNC, TFUNC,
TCHAN, TCHAN,
......
...@@ -656,7 +656,7 @@ func typePkg(t *types.Type) *types.Pkg { ...@@ -656,7 +656,7 @@ func typePkg(t *types.Type) *types.Pkg {
tsym := t.Sym tsym := t.Sym
if tsym == nil { if tsym == nil {
switch t.Etype { switch t.Etype {
case TARRAY, TSLICE, TPTR32, TPTR64, TCHAN: case TARRAY, TSLICE, TPTR, TCHAN:
if t.Elem() != nil { if t.Elem() != nil {
tsym = t.Elem().Sym tsym = t.Elem().Sym
} }
...@@ -714,8 +714,7 @@ var kinds = []int{ ...@@ -714,8 +714,7 @@ var kinds = []int{
TFLOAT64: objabi.KindFloat64, TFLOAT64: objabi.KindFloat64,
TBOOL: objabi.KindBool, TBOOL: objabi.KindBool,
TSTRING: objabi.KindString, TSTRING: objabi.KindString,
TPTR32: objabi.KindPtr, TPTR: objabi.KindPtr,
TPTR64: objabi.KindPtr,
TSTRUCT: objabi.KindStruct, TSTRUCT: objabi.KindStruct,
TINTER: objabi.KindInterface, TINTER: objabi.KindInterface,
TCHAN: objabi.KindChan, TCHAN: objabi.KindChan,
...@@ -736,8 +735,7 @@ func typeptrdata(t *types.Type) int64 { ...@@ -736,8 +735,7 @@ func typeptrdata(t *types.Type) int64 {
} }
switch t.Etype { switch t.Etype {
case TPTR32, case TPTR,
TPTR64,
TUNSAFEPTR, TUNSAFEPTR,
TFUNC, TFUNC,
TCHAN, TCHAN,
...@@ -1035,8 +1033,7 @@ func isreflexive(t *types.Type) bool { ...@@ -1035,8 +1033,7 @@ func isreflexive(t *types.Type) bool {
TINT64, TINT64,
TUINT64, TUINT64,
TUINTPTR, TUINTPTR,
TPTR32, TPTR,
TPTR64,
TUNSAFEPTR, TUNSAFEPTR,
TSTRING, TSTRING,
TCHAN: TCHAN:
...@@ -1071,7 +1068,7 @@ func isreflexive(t *types.Type) bool { ...@@ -1071,7 +1068,7 @@ func isreflexive(t *types.Type) bool {
func needkeyupdate(t *types.Type) bool { func needkeyupdate(t *types.Type) bool {
switch t.Etype { switch t.Etype {
case TBOOL, TINT, TUINT, TINT8, TUINT8, TINT16, TUINT16, TINT32, TUINT32, case TBOOL, TINT, TUINT, TINT8, TUINT8, TINT16, TUINT16, TINT32, TUINT32,
TINT64, TUINT64, TUINTPTR, TPTR32, TPTR64, TUNSAFEPTR, TCHAN: TINT64, TUINT64, TUINTPTR, TPTR, TUNSAFEPTR, TCHAN:
return false return false
case TFLOAT32, TFLOAT64, TCOMPLEX64, TCOMPLEX128, // floats and complex can be +0/-0 case TFLOAT32, TFLOAT64, TCOMPLEX64, TCOMPLEX128, // floats and complex can be +0/-0
...@@ -1279,7 +1276,7 @@ func dtypesym(t *types.Type) *obj.LSym { ...@@ -1279,7 +1276,7 @@ func dtypesym(t *types.Type) *obj.LSym {
ot = duint8(lsym, ot, uint8(obj.Bool2int(needkeyupdate(t.Key())))) ot = duint8(lsym, ot, uint8(obj.Bool2int(needkeyupdate(t.Key()))))
ot = dextratype(lsym, ot, t, 0) ot = dextratype(lsym, ot, t, 0)
case TPTR32, TPTR64: case TPTR:
if t.Elem().Etype == TANY { if t.Elem().Etype == TANY {
// ../../../../runtime/type.go:/UnsafePointerType // ../../../../runtime/type.go:/UnsafePointerType
ot = dcommontype(lsym, t) ot = dcommontype(lsym, t)
...@@ -1356,7 +1353,7 @@ func dtypesym(t *types.Type) *obj.LSym { ...@@ -1356,7 +1353,7 @@ func dtypesym(t *types.Type) *obj.LSym {
// functions must return the existing type structure rather // functions must return the existing type structure rather
// than creating a new one. // than creating a new one.
switch t.Etype { switch t.Etype {
case TPTR32, TPTR64, TARRAY, TCHAN, TFUNC, TMAP, TSLICE, TSTRUCT: case TPTR, TARRAY, TCHAN, TFUNC, TMAP, TSLICE, TSTRUCT:
keep = true keep = true
} }
} }
......
...@@ -1363,8 +1363,7 @@ var opToSSA = map[opAndType]ssa.Op{ ...@@ -1363,8 +1363,7 @@ var opToSSA = map[opAndType]ssa.Op{
opAndType{OEQ, TFUNC}: ssa.OpEqPtr, opAndType{OEQ, TFUNC}: ssa.OpEqPtr,
opAndType{OEQ, TMAP}: ssa.OpEqPtr, opAndType{OEQ, TMAP}: ssa.OpEqPtr,
opAndType{OEQ, TCHAN}: ssa.OpEqPtr, opAndType{OEQ, TCHAN}: ssa.OpEqPtr,
opAndType{OEQ, TPTR32}: ssa.OpEqPtr, opAndType{OEQ, TPTR}: ssa.OpEqPtr,
opAndType{OEQ, TPTR64}: ssa.OpEqPtr,
opAndType{OEQ, TUINTPTR}: ssa.OpEqPtr, opAndType{OEQ, TUINTPTR}: ssa.OpEqPtr,
opAndType{OEQ, TUNSAFEPTR}: ssa.OpEqPtr, opAndType{OEQ, TUNSAFEPTR}: ssa.OpEqPtr,
opAndType{OEQ, TFLOAT64}: ssa.OpEq64F, opAndType{OEQ, TFLOAT64}: ssa.OpEq64F,
...@@ -1384,8 +1383,7 @@ var opToSSA = map[opAndType]ssa.Op{ ...@@ -1384,8 +1383,7 @@ var opToSSA = map[opAndType]ssa.Op{
opAndType{ONE, TFUNC}: ssa.OpNeqPtr, opAndType{ONE, TFUNC}: ssa.OpNeqPtr,
opAndType{ONE, TMAP}: ssa.OpNeqPtr, opAndType{ONE, TMAP}: ssa.OpNeqPtr,
opAndType{ONE, TCHAN}: ssa.OpNeqPtr, opAndType{ONE, TCHAN}: ssa.OpNeqPtr,
opAndType{ONE, TPTR32}: ssa.OpNeqPtr, opAndType{ONE, TPTR}: ssa.OpNeqPtr,
opAndType{ONE, TPTR64}: ssa.OpNeqPtr,
opAndType{ONE, TUINTPTR}: ssa.OpNeqPtr, opAndType{ONE, TUINTPTR}: ssa.OpNeqPtr,
opAndType{ONE, TUNSAFEPTR}: ssa.OpNeqPtr, opAndType{ONE, TUNSAFEPTR}: ssa.OpNeqPtr,
opAndType{ONE, TFLOAT64}: ssa.OpNeq64F, opAndType{ONE, TFLOAT64}: ssa.OpNeq64F,
......
...@@ -772,8 +772,7 @@ func assignop(src *types.Type, dst *types.Type, why *string) Op { ...@@ -772,8 +772,7 @@ func assignop(src *types.Type, dst *types.Type, why *string) Op {
// 5. src is the predeclared identifier nil and dst is a nillable type. // 5. src is the predeclared identifier nil and dst is a nillable type.
if src.Etype == TNIL { if src.Etype == TNIL {
switch dst.Etype { switch dst.Etype {
case TPTR32, case TPTR,
TPTR64,
TFUNC, TFUNC,
TMAP, TMAP,
TCHAN, TCHAN,
...@@ -2003,8 +2002,7 @@ func isdirectiface(t *types.Type) bool { ...@@ -2003,8 +2002,7 @@ func isdirectiface(t *types.Type) bool {
} }
switch t.Etype { switch t.Etype {
case TPTR32, case TPTR,
TPTR64,
TCHAN, TCHAN,
TMAP, TMAP,
TFUNC, TFUNC,
......
...@@ -87,8 +87,7 @@ var _typekind = []string{ ...@@ -87,8 +87,7 @@ var _typekind = []string{
TFLOAT64: "float64", TFLOAT64: "float64",
TBOOL: "bool", TBOOL: "bool",
TSTRING: "string", TSTRING: "string",
TPTR32: "pointer", TPTR: "pointer",
TPTR64: "pointer",
TUNSAFEPTR: "unsafe.Pointer", TUNSAFEPTR: "unsafe.Pointer",
TSTRUCT: "struct", TSTRUCT: "struct",
TINTER: "interface", TINTER: "interface",
......
...@@ -32,9 +32,7 @@ const ( ...@@ -32,9 +32,7 @@ const (
TBOOL = types.TBOOL TBOOL = types.TBOOL
TPTR32 = types.TPTR32 TPTR = types.TPTR
TPTR64 = types.TPTR64
TFUNC = types.TFUNC TFUNC = types.TFUNC
TSLICE = types.TSLICE TSLICE = types.TSLICE
TARRAY = types.TARRAY TARRAY = types.TARRAY
......
...@@ -177,11 +177,8 @@ func typeinit() { ...@@ -177,11 +177,8 @@ func typeinit() {
simtype[et] = et simtype[et] = et
} }
types.Types[TPTR32] = types.New(TPTR32) types.Types[TPTR] = types.New(TPTR)
dowidth(types.Types[TPTR32]) dowidth(types.Types[TPTR])
types.Types[TPTR64] = types.New(TPTR64)
dowidth(types.Types[TPTR64])
t := types.New(TUNSAFEPTR) t := types.New(TUNSAFEPTR)
types.Types[TUNSAFEPTR] = t types.Types[TUNSAFEPTR] = t
...@@ -190,11 +187,6 @@ func typeinit() { ...@@ -190,11 +187,6 @@ func typeinit() {
asNode(t.Sym.Def).Name = new(Name) asNode(t.Sym.Def).Name = new(Name)
dowidth(types.Types[TUNSAFEPTR]) dowidth(types.Types[TUNSAFEPTR])
types.Tptr = TPTR32
if Widthptr == 8 {
types.Tptr = TPTR64
}
for et := TINT8; et <= TUINT64; et++ { for et := TINT8; et <= TUINT64; et++ {
isInt[et] = true isInt[et] = true
} }
...@@ -263,8 +255,7 @@ func typeinit() { ...@@ -263,8 +255,7 @@ func typeinit() {
okforlen[TSLICE] = true okforlen[TSLICE] = true
okforlen[TSTRING] = true okforlen[TSTRING] = true
okforeq[TPTR32] = true okforeq[TPTR] = true
okforeq[TPTR64] = true
okforeq[TUNSAFEPTR] = true okforeq[TUNSAFEPTR] = true
okforeq[TINTER] = true okforeq[TINTER] = true
okforeq[TCHAN] = true okforeq[TCHAN] = true
...@@ -357,10 +348,10 @@ func typeinit() { ...@@ -357,10 +348,10 @@ func typeinit() {
types.Types[TINTER] = types.New(TINTER) types.Types[TINTER] = types.New(TINTER)
// simple aliases // simple aliases
simtype[TMAP] = types.Tptr simtype[TMAP] = TPTR
simtype[TCHAN] = types.Tptr simtype[TCHAN] = TPTR
simtype[TFUNC] = types.Tptr simtype[TFUNC] = TPTR
simtype[TUNSAFEPTR] = types.Tptr simtype[TUNSAFEPTR] = TPTR
array_array = int(Rnd(0, int64(Widthptr))) array_array = int(Rnd(0, int64(Widthptr)))
array_nel = int(Rnd(int64(array_array)+int64(Widthptr), int64(Widthptr))) array_nel = int(Rnd(int64(array_array)+int64(Widthptr), int64(Widthptr)))
......
...@@ -2138,7 +2138,7 @@ func walkprint(nn *Node, init *Nodes) *Node { ...@@ -2138,7 +2138,7 @@ func walkprint(nn *Node, init *Nodes) *Node {
on = syslook("printiface") on = syslook("printiface")
} }
on = substArgTypes(on, n.Type) // any-1 on = substArgTypes(on, n.Type) // any-1
case TPTR32, TPTR64, TCHAN, TMAP, TFUNC, TUNSAFEPTR: case TPTR, TCHAN, TMAP, TFUNC, TUNSAFEPTR:
on = syslook("printpointer") on = syslook("printpointer")
on = substArgTypes(on, n.Type) // any-1 on = substArgTypes(on, n.Type) // any-1
case TSLICE: case TSLICE:
......
...@@ -163,7 +163,6 @@ func init() { ...@@ -163,7 +163,6 @@ func init() {
} }
types.Dowidth = func(t *types.Type) {} types.Dowidth = func(t *types.Type) {}
types.Tptr = types.TPTR64
for _, typ := range [...]struct { for _, typ := range [...]struct {
width int64 width int64
et types.EType et types.EType
......
...@@ -43,9 +43,7 @@ const ( ...@@ -43,9 +43,7 @@ const (
TBOOL TBOOL
TPTR32 TPTR
TPTR64
TFUNC TFUNC
TSLICE TSLICE
TARRAY TARRAY
...@@ -137,7 +135,7 @@ type Type struct { ...@@ -137,7 +135,7 @@ type Type struct {
// TFUNCARGS: FuncArgs // TFUNCARGS: FuncArgs
// TCHANARGS: ChanArgs // TCHANARGS: ChanArgs
// TCHAN: *Chan // TCHAN: *Chan
// TPTR32, TPTR64: Ptr // TPTR: Ptr
// TARRAY: *Array // TARRAY: *Array
// TSLICE: Slice // TSLICE: Slice
Extra interface{} Extra interface{}
...@@ -461,7 +459,7 @@ func New(et EType) *Type { ...@@ -461,7 +459,7 @@ func New(et EType) *Type {
t.Extra = new(Struct) t.Extra = new(Struct)
case TINTER: case TINTER:
t.Extra = new(Interface) t.Extra = new(Interface)
case TPTR32, TPTR64: case TPTR:
t.Extra = Ptr{} t.Extra = Ptr{}
case TCHANARGS: case TCHANARGS:
t.Extra = ChanArgs{} t.Extra = ChanArgs{}
...@@ -560,11 +558,7 @@ func NewPtr(elem *Type) *Type { ...@@ -560,11 +558,7 @@ func NewPtr(elem *Type) *Type {
return t return t
} }
if Tptr == 0 { t := New(TPTR)
Fatalf("NewPtr: Tptr not initialized")
}
t := New(Tptr)
t.Extra = Ptr{Elem: elem} t.Extra = Ptr{Elem: elem}
t.Width = int64(Widthptr) t.Width = int64(Widthptr)
t.Align = uint8(Widthptr) t.Align = uint8(Widthptr)
...@@ -619,7 +613,7 @@ func SubstAny(t *Type, types *[]*Type) *Type { ...@@ -619,7 +613,7 @@ func SubstAny(t *Type, types *[]*Type) *Type {
t = (*types)[0] t = (*types)[0]
*types = (*types)[1:] *types = (*types)[1:]
case TPTR32, TPTR64: case TPTR:
elem := SubstAny(t.Elem(), types) elem := SubstAny(t.Elem(), types)
if elem != t.Elem() { if elem != t.Elem() {
t = t.copy() t = t.copy()
...@@ -790,7 +784,7 @@ func (t *Type) Key() *Type { ...@@ -790,7 +784,7 @@ func (t *Type) Key() *Type {
// Usable with pointers, channels, arrays, slices, and maps. // Usable with pointers, channels, arrays, slices, and maps.
func (t *Type) Elem() *Type { func (t *Type) Elem() *Type {
switch t.Etype { switch t.Etype {
case TPTR32, TPTR64: case TPTR:
return t.Extra.(Ptr).Elem return t.Extra.(Ptr).Elem
case TARRAY: case TARRAY:
return t.Extra.(*Array).Elem return t.Extra.(*Array).Elem
...@@ -1101,7 +1095,7 @@ func (t *Type) cmp(x *Type) Cmp { ...@@ -1101,7 +1095,7 @@ func (t *Type) cmp(x *Type) Cmp {
} }
return t.Elem().cmp(x.Elem()) return t.Elem().cmp(x.Elem())
case TPTR32, TPTR64, TSLICE: case TPTR, TSLICE:
// No special cases for these, they are handled // No special cases for these, they are handled
// by the general code after the switch. // by the general code after the switch.
...@@ -1199,7 +1193,7 @@ func (t *Type) cmp(x *Type) Cmp { ...@@ -1199,7 +1193,7 @@ func (t *Type) cmp(x *Type) Cmp {
panic(e) panic(e)
} }
// Common element type comparison for TARRAY, TCHAN, TPTR32, TPTR64, and TSLICE. // Common element type comparison for TARRAY, TCHAN, TPTR, and TSLICE.
return t.Elem().cmp(x.Elem()) return t.Elem().cmp(x.Elem())
} }
...@@ -1261,7 +1255,7 @@ func (t *Type) IsComplex() bool { ...@@ -1261,7 +1255,7 @@ func (t *Type) IsComplex() bool {
// IsPtr reports whether t is a regular Go pointer type. // IsPtr reports whether t is a regular Go pointer type.
// This does not include unsafe.Pointer. // This does not include unsafe.Pointer.
func (t *Type) IsPtr() bool { func (t *Type) IsPtr() bool {
return t.Etype == TPTR32 || t.Etype == TPTR64 return t.Etype == TPTR
} }
// IsUnsafePtr reports whether t is an unsafe pointer. // IsUnsafePtr reports whether t is an unsafe pointer.
...@@ -1275,7 +1269,7 @@ func (t *Type) IsUnsafePtr() bool { ...@@ -1275,7 +1269,7 @@ func (t *Type) IsUnsafePtr() bool {
// that consist of a single pointer shaped type. // that consist of a single pointer shaped type.
// TODO(mdempsky): Should it? See golang.org/issue/15028. // TODO(mdempsky): Should it? See golang.org/issue/15028.
func (t *Type) IsPtrShaped() bool { func (t *Type) IsPtrShaped() bool {
return t.Etype == TPTR32 || t.Etype == TPTR64 || t.Etype == TUNSAFEPTR || return t.Etype == TPTR || t.Etype == TUNSAFEPTR ||
t.Etype == TMAP || t.Etype == TCHAN || t.Etype == TFUNC t.Etype == TMAP || t.Etype == TCHAN || t.Etype == TFUNC
} }
...@@ -1449,7 +1443,7 @@ func Haspointers1(t *Type, ignoreNotInHeap bool) bool { ...@@ -1449,7 +1443,7 @@ func Haspointers1(t *Type, ignoreNotInHeap bool) bool {
} }
return false return false
case TPTR32, TPTR64, TSLICE: case TPTR, TSLICE:
return !(ignoreNotInHeap && t.Elem().NotInHeap()) return !(ignoreNotInHeap && t.Elem().NotInHeap())
case TTUPLE: case TTUPLE:
......
...@@ -11,9 +11,6 @@ import ( ...@@ -11,9 +11,6 @@ import (
const BADWIDTH = -1000000000 const BADWIDTH = -1000000000
// Initialized by frontend. Exists only here.
var Tptr EType // either TPTR32 or TPTR64
// The following variables must be initialized early by the frontend. // The following variables must be initialized early by the frontend.
// They are here to break import cycles. // They are here to break import cycles.
// TODO(gri) eliminate these dependencies. // TODO(gri) eliminate these dependencies.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment