// Putting struct{*byte} and similar into direct interfaces.
(IMake typ (StructMake1 val)) -> (IMake typ val)
-(StructSelect [0] x:(IData _)) -> x
+(StructSelect [0] (IData x)) -> (IData x)
// un-SSAable values use mem->mem copies
(Store {t} dst (Load src mem) mem) && !fe.CanSSA(t.(*types.Type)) ->
(Store _ (ArrayMake0) mem) -> mem
(Store dst (ArrayMake1 e) mem) -> (Store {e.Type} dst e mem)
-// Putting [1]{*byte} and similar into direct interfaces.
+// Putting [1]*byte and similar into direct interfaces.
(IMake typ (ArrayMake1 val)) -> (IMake typ val)
-(ArraySelect [0] x:(IData _)) -> x
+(ArraySelect [0] (IData x)) -> (IData x)
// string ops
// Decomposing StringMake and lowering of StringPtr and StringLen
v.AddArg(x)
return true
}
- // match: (ArraySelect [0] x:(IData _))
- // result: x
+ // match: (ArraySelect [0] (IData x))
+ // result: (IData x)
for {
if v.AuxInt != 0 {
break
}
- x := v.Args[0]
- if x.Op != OpIData {
+ v_0 := v.Args[0]
+ if v_0.Op != OpIData {
break
}
- v.reset(OpCopy)
- v.Type = x.Type
+ x := v_0.Args[0]
+ v.reset(OpIData)
v.AddArg(x)
return true
}
v0.AddArg(mem)
return true
}
- // match: (StructSelect [0] x:(IData _))
- // result: x
+ // match: (StructSelect [0] (IData x))
+ // result: (IData x)
for {
if v.AuxInt != 0 {
break
}
- x := v.Args[0]
- if x.Op != OpIData {
+ v_0 := v.Args[0]
+ if v_0.Op != OpIData {
break
}
- v.reset(OpCopy)
- v.Type = x.Type
+ x := v_0.Args[0]
+ v.reset(OpIData)
v.AddArg(x)
return true
}