// Decompose compound argument values
// Do this early to simplify tracking names for debugging.
-(Arg {n} [off]) && v.Type.IsString() ->
+(Arg {n} [off]) && v.Type.IsString() =>
(StringMake
(Arg <typ.BytePtr> {n} [off])
- (Arg <typ.Int> {n} [off+config.PtrSize]))
+ (Arg <typ.Int> {n} [off+int32(config.PtrSize)]))
-(Arg {n} [off]) && v.Type.IsSlice() ->
+(Arg {n} [off]) && v.Type.IsSlice() =>
(SliceMake
(Arg <v.Type.Elem().PtrTo()> {n} [off])
- (Arg <typ.Int> {n} [off+config.PtrSize])
- (Arg <typ.Int> {n} [off+2*config.PtrSize]))
+ (Arg <typ.Int> {n} [off+int32(config.PtrSize)])
+ (Arg <typ.Int> {n} [off+2*int32(config.PtrSize)]))
-(Arg {n} [off]) && v.Type.IsInterface() ->
+(Arg {n} [off]) && v.Type.IsInterface() =>
(IMake
(Arg <typ.Uintptr> {n} [off])
- (Arg <typ.BytePtr> {n} [off+config.PtrSize]))
+ (Arg <typ.BytePtr> {n} [off+int32(config.PtrSize)]))
-(Arg {n} [off]) && v.Type.IsComplex() && v.Type.Size() == 16 ->
+(Arg {n} [off]) && v.Type.IsComplex() && v.Type.Size() == 16 =>
(ComplexMake
(Arg <typ.Float64> {n} [off])
(Arg <typ.Float64> {n} [off+8]))
-(Arg {n} [off]) && v.Type.IsComplex() && v.Type.Size() == 8 ->
+(Arg {n} [off]) && v.Type.IsComplex() && v.Type.Size() == 8 =>
(ComplexMake
(Arg <typ.Float32> {n} [off])
(Arg <typ.Float32> {n} [off+4]))
-(Arg <t>) && t.IsStruct() && t.NumFields() == 0 && fe.CanSSA(t) ->
+(Arg <t>) && t.IsStruct() && t.NumFields() == 0 && fe.CanSSA(t) =>
(StructMake0)
-(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 1 && fe.CanSSA(t) ->
+(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 1 && fe.CanSSA(t) =>
(StructMake1
- (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)]))
-(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 2 && fe.CanSSA(t) ->
+ (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))]))
+(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 2 && fe.CanSSA(t) =>
(StructMake2
- (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)])
- (Arg <t.FieldType(1)> {n} [off+t.FieldOff(1)]))
-(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 3 && fe.CanSSA(t) ->
+ (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))])
+ (Arg <t.FieldType(1)> {n} [off+int32(t.FieldOff(1))]))
+(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 3 && fe.CanSSA(t) =>
(StructMake3
- (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)])
- (Arg <t.FieldType(1)> {n} [off+t.FieldOff(1)])
- (Arg <t.FieldType(2)> {n} [off+t.FieldOff(2)]))
-(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 4 && fe.CanSSA(t) ->
+ (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))])
+ (Arg <t.FieldType(1)> {n} [off+int32(t.FieldOff(1))])
+ (Arg <t.FieldType(2)> {n} [off+int32(t.FieldOff(2))]))
+(Arg <t> {n} [off]) && t.IsStruct() && t.NumFields() == 4 && fe.CanSSA(t) =>
(StructMake4
- (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)])
- (Arg <t.FieldType(1)> {n} [off+t.FieldOff(1)])
- (Arg <t.FieldType(2)> {n} [off+t.FieldOff(2)])
- (Arg <t.FieldType(3)> {n} [off+t.FieldOff(3)]))
+ (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))])
+ (Arg <t.FieldType(1)> {n} [off+int32(t.FieldOff(1))])
+ (Arg <t.FieldType(2)> {n} [off+int32(t.FieldOff(2))])
+ (Arg <t.FieldType(3)> {n} [off+int32(t.FieldOff(3))]))
-(Arg <t>) && t.IsArray() && t.NumElem() == 0 ->
+(Arg <t>) && t.IsArray() && t.NumElem() == 0 =>
(ArrayMake0)
-(Arg <t> {n} [off]) && t.IsArray() && t.NumElem() == 1 && fe.CanSSA(t) ->
+(Arg <t> {n} [off]) && t.IsArray() && t.NumElem() == 1 && fe.CanSSA(t) =>
(ArrayMake1 (Arg <t.Elem()> {n} [off]))
typ := &b.Func.Config.Types
// match: (Arg {n} [off])
// cond: v.Type.IsString()
- // result: (StringMake (Arg <typ.BytePtr> {n} [off]) (Arg <typ.Int> {n} [off+config.PtrSize]))
+ // result: (StringMake (Arg <typ.BytePtr> {n} [off]) (Arg <typ.Int> {n} [off+int32(config.PtrSize)]))
for {
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(v.Type.IsString()) {
break
}
v.reset(OpStringMake)
v0 := b.NewValue0(v.Pos, OpArg, typ.BytePtr)
- v0.AuxInt = off
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off)
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, typ.Int)
- v1.AuxInt = off + config.PtrSize
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + int32(config.PtrSize))
+ v1.Aux = symToAux(n)
v.AddArg2(v0, v1)
return true
}
// match: (Arg {n} [off])
// cond: v.Type.IsSlice()
- // result: (SliceMake (Arg <v.Type.Elem().PtrTo()> {n} [off]) (Arg <typ.Int> {n} [off+config.PtrSize]) (Arg <typ.Int> {n} [off+2*config.PtrSize]))
+ // result: (SliceMake (Arg <v.Type.Elem().PtrTo()> {n} [off]) (Arg <typ.Int> {n} [off+int32(config.PtrSize)]) (Arg <typ.Int> {n} [off+2*int32(config.PtrSize)]))
for {
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(v.Type.IsSlice()) {
break
}
v.reset(OpSliceMake)
v0 := b.NewValue0(v.Pos, OpArg, v.Type.Elem().PtrTo())
- v0.AuxInt = off
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off)
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, typ.Int)
- v1.AuxInt = off + config.PtrSize
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + int32(config.PtrSize))
+ v1.Aux = symToAux(n)
v2 := b.NewValue0(v.Pos, OpArg, typ.Int)
- v2.AuxInt = off + 2*config.PtrSize
- v2.Aux = n
+ v2.AuxInt = int32ToAuxInt(off + 2*int32(config.PtrSize))
+ v2.Aux = symToAux(n)
v.AddArg3(v0, v1, v2)
return true
}
// match: (Arg {n} [off])
// cond: v.Type.IsInterface()
- // result: (IMake (Arg <typ.Uintptr> {n} [off]) (Arg <typ.BytePtr> {n} [off+config.PtrSize]))
+ // result: (IMake (Arg <typ.Uintptr> {n} [off]) (Arg <typ.BytePtr> {n} [off+int32(config.PtrSize)]))
for {
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(v.Type.IsInterface()) {
break
}
v.reset(OpIMake)
v0 := b.NewValue0(v.Pos, OpArg, typ.Uintptr)
- v0.AuxInt = off
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off)
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, typ.BytePtr)
- v1.AuxInt = off + config.PtrSize
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + int32(config.PtrSize))
+ v1.Aux = symToAux(n)
v.AddArg2(v0, v1)
return true
}
// cond: v.Type.IsComplex() && v.Type.Size() == 16
// result: (ComplexMake (Arg <typ.Float64> {n} [off]) (Arg <typ.Float64> {n} [off+8]))
for {
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(v.Type.IsComplex() && v.Type.Size() == 16) {
break
}
v.reset(OpComplexMake)
v0 := b.NewValue0(v.Pos, OpArg, typ.Float64)
- v0.AuxInt = off
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off)
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, typ.Float64)
- v1.AuxInt = off + 8
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + 8)
+ v1.Aux = symToAux(n)
v.AddArg2(v0, v1)
return true
}
// cond: v.Type.IsComplex() && v.Type.Size() == 8
// result: (ComplexMake (Arg <typ.Float32> {n} [off]) (Arg <typ.Float32> {n} [off+4]))
for {
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(v.Type.IsComplex() && v.Type.Size() == 8) {
break
}
v.reset(OpComplexMake)
v0 := b.NewValue0(v.Pos, OpArg, typ.Float32)
- v0.AuxInt = off
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off)
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, typ.Float32)
- v1.AuxInt = off + 4
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + 4)
+ v1.Aux = symToAux(n)
v.AddArg2(v0, v1)
return true
}
}
// match: (Arg <t> {n} [off])
// cond: t.IsStruct() && t.NumFields() == 1 && fe.CanSSA(t)
- // result: (StructMake1 (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)]))
+ // result: (StructMake1 (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))]))
for {
t := v.Type
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(t.IsStruct() && t.NumFields() == 1 && fe.CanSSA(t)) {
break
}
v.reset(OpStructMake1)
v0 := b.NewValue0(v.Pos, OpArg, t.FieldType(0))
- v0.AuxInt = off + t.FieldOff(0)
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(0)))
+ v0.Aux = symToAux(n)
v.AddArg(v0)
return true
}
// match: (Arg <t> {n} [off])
// cond: t.IsStruct() && t.NumFields() == 2 && fe.CanSSA(t)
- // result: (StructMake2 (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)]) (Arg <t.FieldType(1)> {n} [off+t.FieldOff(1)]))
+ // result: (StructMake2 (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))]) (Arg <t.FieldType(1)> {n} [off+int32(t.FieldOff(1))]))
for {
t := v.Type
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(t.IsStruct() && t.NumFields() == 2 && fe.CanSSA(t)) {
break
}
v.reset(OpStructMake2)
v0 := b.NewValue0(v.Pos, OpArg, t.FieldType(0))
- v0.AuxInt = off + t.FieldOff(0)
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(0)))
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, t.FieldType(1))
- v1.AuxInt = off + t.FieldOff(1)
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(1)))
+ v1.Aux = symToAux(n)
v.AddArg2(v0, v1)
return true
}
// match: (Arg <t> {n} [off])
// cond: t.IsStruct() && t.NumFields() == 3 && fe.CanSSA(t)
- // result: (StructMake3 (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)]) (Arg <t.FieldType(1)> {n} [off+t.FieldOff(1)]) (Arg <t.FieldType(2)> {n} [off+t.FieldOff(2)]))
+ // result: (StructMake3 (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))]) (Arg <t.FieldType(1)> {n} [off+int32(t.FieldOff(1))]) (Arg <t.FieldType(2)> {n} [off+int32(t.FieldOff(2))]))
for {
t := v.Type
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(t.IsStruct() && t.NumFields() == 3 && fe.CanSSA(t)) {
break
}
v.reset(OpStructMake3)
v0 := b.NewValue0(v.Pos, OpArg, t.FieldType(0))
- v0.AuxInt = off + t.FieldOff(0)
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(0)))
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, t.FieldType(1))
- v1.AuxInt = off + t.FieldOff(1)
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(1)))
+ v1.Aux = symToAux(n)
v2 := b.NewValue0(v.Pos, OpArg, t.FieldType(2))
- v2.AuxInt = off + t.FieldOff(2)
- v2.Aux = n
+ v2.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(2)))
+ v2.Aux = symToAux(n)
v.AddArg3(v0, v1, v2)
return true
}
// match: (Arg <t> {n} [off])
// cond: t.IsStruct() && t.NumFields() == 4 && fe.CanSSA(t)
- // result: (StructMake4 (Arg <t.FieldType(0)> {n} [off+t.FieldOff(0)]) (Arg <t.FieldType(1)> {n} [off+t.FieldOff(1)]) (Arg <t.FieldType(2)> {n} [off+t.FieldOff(2)]) (Arg <t.FieldType(3)> {n} [off+t.FieldOff(3)]))
+ // result: (StructMake4 (Arg <t.FieldType(0)> {n} [off+int32(t.FieldOff(0))]) (Arg <t.FieldType(1)> {n} [off+int32(t.FieldOff(1))]) (Arg <t.FieldType(2)> {n} [off+int32(t.FieldOff(2))]) (Arg <t.FieldType(3)> {n} [off+int32(t.FieldOff(3))]))
for {
t := v.Type
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(t.IsStruct() && t.NumFields() == 4 && fe.CanSSA(t)) {
break
}
v.reset(OpStructMake4)
v0 := b.NewValue0(v.Pos, OpArg, t.FieldType(0))
- v0.AuxInt = off + t.FieldOff(0)
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(0)))
+ v0.Aux = symToAux(n)
v1 := b.NewValue0(v.Pos, OpArg, t.FieldType(1))
- v1.AuxInt = off + t.FieldOff(1)
- v1.Aux = n
+ v1.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(1)))
+ v1.Aux = symToAux(n)
v2 := b.NewValue0(v.Pos, OpArg, t.FieldType(2))
- v2.AuxInt = off + t.FieldOff(2)
- v2.Aux = n
+ v2.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(2)))
+ v2.Aux = symToAux(n)
v3 := b.NewValue0(v.Pos, OpArg, t.FieldType(3))
- v3.AuxInt = off + t.FieldOff(3)
- v3.Aux = n
+ v3.AuxInt = int32ToAuxInt(off + int32(t.FieldOff(3)))
+ v3.Aux = symToAux(n)
v.AddArg4(v0, v1, v2, v3)
return true
}
// result: (ArrayMake1 (Arg <t.Elem()> {n} [off]))
for {
t := v.Type
- off := v.AuxInt
- n := v.Aux
+ off := auxIntToInt32(v.AuxInt)
+ n := auxToSym(v.Aux)
if !(t.IsArray() && t.NumElem() == 1 && fe.CanSSA(t)) {
break
}
v.reset(OpArrayMake1)
v0 := b.NewValue0(v.Pos, OpArg, t.Elem())
- v0.AuxInt = off
- v0.Aux = n
+ v0.AuxInt = int32ToAuxInt(off)
+ v0.Aux = symToAux(n)
v.AddArg(v0)
return true
}