From: Cuong Manh Le Date: Thu, 23 Apr 2020 04:02:15 +0000 (+0700) Subject: cmd/compile: rewrite dec rules to use typed aux field X-Git-Tag: go1.15beta1~425 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=917aa72c1438c64e593d68a779892b97012b4779;p=gostls13.git cmd/compile: rewrite dec rules to use typed aux field Passes toolstash-check -all. Change-Id: Ia73233c2269017a5802df821ea2ca138c16a94ee Reviewed-on: https://go-review.googlesource.com/c/go/+/229519 Run-TryBot: Cuong Manh Le TryBot-Result: Gobot Gobot Reviewed-by: Michael Munday --- diff --git a/src/cmd/compile/internal/ssa/gen/dec.rules b/src/cmd/compile/internal/ssa/gen/dec.rules index 469846bb69..3fd2be409f 100644 --- a/src/cmd/compile/internal/ssa/gen/dec.rules +++ b/src/cmd/compile/internal/ssa/gen/dec.rules @@ -8,56 +8,56 @@ // pass which handles phis of these types. // complex ops -(ComplexReal (ComplexMake real _ )) -> real -(ComplexImag (ComplexMake _ imag )) -> imag +(ComplexReal (ComplexMake real _ )) => real +(ComplexImag (ComplexMake _ imag )) => imag -(Load ptr mem) && t.IsComplex() && t.Size() == 8 -> +(Load ptr mem) && t.IsComplex() && t.Size() == 8 => (ComplexMake (Load ptr mem) (Load (OffPtr [4] ptr) mem) ) -(Store {t} dst (ComplexMake real imag) mem) && t.(*types.Type).Size() == 8 -> +(Store {t} dst (ComplexMake real imag) mem) && t.Size() == 8 => (Store {typ.Float32} (OffPtr [4] dst) imag (Store {typ.Float32} dst real mem)) -(Load ptr mem) && t.IsComplex() && t.Size() == 16 -> +(Load ptr mem) && t.IsComplex() && t.Size() == 16 => (ComplexMake (Load ptr mem) (Load (OffPtr [8] ptr) mem) ) -(Store {t} dst (ComplexMake real imag) mem) && t.(*types.Type).Size() == 16 -> +(Store {t} dst (ComplexMake real imag) mem) && t.Size() == 16 => (Store {typ.Float64} (OffPtr [8] dst) imag (Store {typ.Float64} dst real mem)) // string ops -(StringPtr (StringMake ptr _)) -> ptr -(StringLen (StringMake _ len)) -> len +(StringPtr (StringMake ptr _)) => ptr +(StringLen (StringMake _ len)) => len -(Load ptr mem) && t.IsString() -> +(Load ptr mem) && t.IsString() => (StringMake (Load ptr mem) (Load (OffPtr [config.PtrSize] ptr) mem)) -(Store dst (StringMake ptr len) mem) -> +(Store dst (StringMake ptr len) mem) => (Store {typ.Int} (OffPtr [config.PtrSize] dst) len (Store {typ.BytePtr} dst ptr mem)) // slice ops -(SlicePtr (SliceMake ptr _ _ )) -> ptr -(SliceLen (SliceMake _ len _)) -> len -(SliceCap (SliceMake _ _ cap)) -> cap +(SlicePtr (SliceMake ptr _ _ )) => ptr +(SliceLen (SliceMake _ len _)) => len +(SliceCap (SliceMake _ _ cap)) => cap -(Load ptr mem) && t.IsSlice() -> +(Load ptr mem) && t.IsSlice() => (SliceMake (Load ptr mem) (Load @@ -66,7 +66,7 @@ (Load (OffPtr [2*config.PtrSize] ptr) mem)) -(Store dst (SliceMake ptr len cap) mem) -> +(Store dst (SliceMake ptr len cap) mem) => (Store {typ.Int} (OffPtr [2*config.PtrSize] dst) cap @@ -76,16 +76,16 @@ (Store {typ.BytePtr} dst ptr mem))) // interface ops -(ITab (IMake itab _)) -> itab -(IData (IMake _ data)) -> data +(ITab (IMake itab _)) => itab +(IData (IMake _ data)) => data -(Load ptr mem) && t.IsInterface() -> +(Load ptr mem) && t.IsInterface() => (IMake (Load ptr mem) (Load (OffPtr [config.PtrSize] ptr) mem)) -(Store dst (IMake itab data) mem) -> +(Store dst (IMake itab data) mem) => (Store {typ.BytePtr} (OffPtr [config.PtrSize] dst) data diff --git a/src/cmd/compile/internal/ssa/rewritedec.go b/src/cmd/compile/internal/ssa/rewritedec.go index 1d7979f5c9..cef781ffaa 100644 --- a/src/cmd/compile/internal/ssa/rewritedec.go +++ b/src/cmd/compile/internal/ssa/rewritedec.go @@ -109,7 +109,7 @@ func rewriteValuedec_OpLoad(v *Value) bool { v0.AddArg2(ptr, mem) v1 := b.NewValue0(v.Pos, OpLoad, typ.Float32) v2 := b.NewValue0(v.Pos, OpOffPtr, typ.Float32Ptr) - v2.AuxInt = 4 + v2.AuxInt = int64ToAuxInt(4) v2.AddArg(ptr) v1.AddArg2(v2, mem) v.AddArg2(v0, v1) @@ -130,7 +130,7 @@ func rewriteValuedec_OpLoad(v *Value) bool { v0.AddArg2(ptr, mem) v1 := b.NewValue0(v.Pos, OpLoad, typ.Float64) v2 := b.NewValue0(v.Pos, OpOffPtr, typ.Float64Ptr) - v2.AuxInt = 8 + v2.AuxInt = int64ToAuxInt(8) v2.AddArg(ptr) v1.AddArg2(v2, mem) v.AddArg2(v0, v1) @@ -151,7 +151,7 @@ func rewriteValuedec_OpLoad(v *Value) bool { v0.AddArg2(ptr, mem) v1 := b.NewValue0(v.Pos, OpLoad, typ.Int) v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr) - v2.AuxInt = config.PtrSize + v2.AuxInt = int64ToAuxInt(config.PtrSize) v2.AddArg(ptr) v1.AddArg2(v2, mem) v.AddArg2(v0, v1) @@ -172,12 +172,12 @@ func rewriteValuedec_OpLoad(v *Value) bool { v0.AddArg2(ptr, mem) v1 := b.NewValue0(v.Pos, OpLoad, typ.Int) v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr) - v2.AuxInt = config.PtrSize + v2.AuxInt = int64ToAuxInt(config.PtrSize) v2.AddArg(ptr) v1.AddArg2(v2, mem) v3 := b.NewValue0(v.Pos, OpLoad, typ.Int) v4 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr) - v4.AuxInt = 2 * config.PtrSize + v4.AuxInt = int64ToAuxInt(2 * config.PtrSize) v4.AddArg(ptr) v3.AddArg2(v4, mem) v.AddArg3(v0, v1, v3) @@ -198,7 +198,7 @@ func rewriteValuedec_OpLoad(v *Value) bool { v0.AddArg2(ptr, mem) v1 := b.NewValue0(v.Pos, OpLoad, typ.BytePtr) v2 := b.NewValue0(v.Pos, OpOffPtr, typ.BytePtrPtr) - v2.AuxInt = config.PtrSize + v2.AuxInt = int64ToAuxInt(config.PtrSize) v2.AddArg(ptr) v1.AddArg2(v2, mem) v.AddArg2(v0, v1) @@ -256,10 +256,10 @@ func rewriteValuedec_OpStore(v *Value) bool { config := b.Func.Config typ := &b.Func.Config.Types // match: (Store {t} dst (ComplexMake real imag) mem) - // cond: t.(*types.Type).Size() == 8 + // cond: t.Size() == 8 // result: (Store {typ.Float32} (OffPtr [4] dst) imag (Store {typ.Float32} dst real mem)) for { - t := v.Aux + t := auxToType(v.Aux) dst := v_0 if v_1.Op != OpComplexMake { break @@ -267,25 +267,25 @@ func rewriteValuedec_OpStore(v *Value) bool { imag := v_1.Args[1] real := v_1.Args[0] mem := v_2 - if !(t.(*types.Type).Size() == 8) { + if !(t.Size() == 8) { break } v.reset(OpStore) - v.Aux = typ.Float32 + v.Aux = typeToAux(typ.Float32) v0 := b.NewValue0(v.Pos, OpOffPtr, typ.Float32Ptr) - v0.AuxInt = 4 + v0.AuxInt = int64ToAuxInt(4) v0.AddArg(dst) v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem) - v1.Aux = typ.Float32 + v1.Aux = typeToAux(typ.Float32) v1.AddArg3(dst, real, mem) v.AddArg3(v0, imag, v1) return true } // match: (Store {t} dst (ComplexMake real imag) mem) - // cond: t.(*types.Type).Size() == 16 + // cond: t.Size() == 16 // result: (Store {typ.Float64} (OffPtr [8] dst) imag (Store {typ.Float64} dst real mem)) for { - t := v.Aux + t := auxToType(v.Aux) dst := v_0 if v_1.Op != OpComplexMake { break @@ -293,16 +293,16 @@ func rewriteValuedec_OpStore(v *Value) bool { imag := v_1.Args[1] real := v_1.Args[0] mem := v_2 - if !(t.(*types.Type).Size() == 16) { + if !(t.Size() == 16) { break } v.reset(OpStore) - v.Aux = typ.Float64 + v.Aux = typeToAux(typ.Float64) v0 := b.NewValue0(v.Pos, OpOffPtr, typ.Float64Ptr) - v0.AuxInt = 8 + v0.AuxInt = int64ToAuxInt(8) v0.AddArg(dst) v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem) - v1.Aux = typ.Float64 + v1.Aux = typeToAux(typ.Float64) v1.AddArg3(dst, real, mem) v.AddArg3(v0, imag, v1) return true @@ -318,12 +318,12 @@ func rewriteValuedec_OpStore(v *Value) bool { ptr := v_1.Args[0] mem := v_2 v.reset(OpStore) - v.Aux = typ.Int + v.Aux = typeToAux(typ.Int) v0 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr) - v0.AuxInt = config.PtrSize + v0.AuxInt = int64ToAuxInt(config.PtrSize) v0.AddArg(dst) v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem) - v1.Aux = typ.BytePtr + v1.Aux = typeToAux(typ.BytePtr) v1.AddArg3(dst, ptr, mem) v.AddArg3(v0, len, v1) return true @@ -340,17 +340,17 @@ func rewriteValuedec_OpStore(v *Value) bool { len := v_1.Args[1] mem := v_2 v.reset(OpStore) - v.Aux = typ.Int + v.Aux = typeToAux(typ.Int) v0 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr) - v0.AuxInt = 2 * config.PtrSize + v0.AuxInt = int64ToAuxInt(2 * config.PtrSize) v0.AddArg(dst) v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem) - v1.Aux = typ.Int + v1.Aux = typeToAux(typ.Int) v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr) - v2.AuxInt = config.PtrSize + v2.AuxInt = int64ToAuxInt(config.PtrSize) v2.AddArg(dst) v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem) - v3.Aux = typ.BytePtr + v3.Aux = typeToAux(typ.BytePtr) v3.AddArg3(dst, ptr, mem) v1.AddArg3(v2, len, v3) v.AddArg3(v0, cap, v1) @@ -367,12 +367,12 @@ func rewriteValuedec_OpStore(v *Value) bool { itab := v_1.Args[0] mem := v_2 v.reset(OpStore) - v.Aux = typ.BytePtr + v.Aux = typeToAux(typ.BytePtr) v0 := b.NewValue0(v.Pos, OpOffPtr, typ.BytePtrPtr) - v0.AuxInt = config.PtrSize + v0.AuxInt = int64ToAuxInt(config.PtrSize) v0.AddArg(dst) v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem) - v1.Aux = typ.Uintptr + v1.Aux = typeToAux(typ.Uintptr) v1.AddArg3(dst, itab, mem) v.AddArg3(v0, data, v1) return true