* known to be dead.
*/
func savex(dr int, x *gc.Node, oldx *gc.Node, res *gc.Node, t *gc.Type) {
- r := int(reg[dr])
+ r := reg[dr]
// save current ax and dx if they are live
// and not the destination
x.Type = gc.Types[gc.TINT64]
gmove(x, oldx)
x.Type = t
- oldx.Ostk = int32(r) // squirrel away old r value
+ oldx.Etype = r // squirrel away old r value
reg[dr] = 1
}
}
func restx(x *gc.Node, oldx *gc.Node) {
if oldx.Op != 0 {
x.Type = gc.Types[gc.TINT64]
- reg[x.Reg] = uint8(oldx.Ostk)
+ reg[x.Reg] = oldx.Etype
gmove(oldx, x)
gc.Regfree(oldx)
}
Nointerface bool
Ullman uint8 // sethi/ullman number
Addable bool // addressable
- Etype uint8 // op for OASOP, etype for OTYPE, exclam for export
+ Etype uint8 // op for OASOP, etype for OTYPE, exclam for export, 6g saved reg
Bounded bool // bounds check unnecessary
Class uint8 // PPARAM, PAUTO, PEXTERN, etc
Embedded uint8 // ODCLFIELD embedded type
Lineno int32
Xoffset int64
Stkdelta int64 // offset added by stack frame compaction phase.
- Ostk int32 // 6g only
Iota int32
Walkgen uint32
Esclevel Level