2016-03-03 11:13:43 +01:00
|
|
|
// autogenerated from gen/dec.rules: do not edit!
|
|
|
|
|
// generated with: cd gen; go run *.go
|
|
|
|
|
|
|
|
|
|
package ssa
|
|
|
|
|
|
|
|
|
|
import "math"
|
|
|
|
|
|
|
|
|
|
var _ = math.MinInt8 // in case not otherwise used
|
|
|
|
|
func rewriteValuedec(v *Value, config *Config) bool {
|
|
|
|
|
switch v.Op {
|
|
|
|
|
case OpSliceCap:
|
|
|
|
|
return rewriteValuedec_OpSliceCap(v, config)
|
|
|
|
|
case OpSliceLen:
|
|
|
|
|
return rewriteValuedec_OpSliceLen(v, config)
|
|
|
|
|
case OpSlicePtr:
|
|
|
|
|
return rewriteValuedec_OpSlicePtr(v, config)
|
|
|
|
|
case OpStringLen:
|
|
|
|
|
return rewriteValuedec_OpStringLen(v, config)
|
|
|
|
|
case OpStringPtr:
|
|
|
|
|
return rewriteValuedec_OpStringPtr(v, config)
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
func rewriteValuedec_OpSliceCap(v *Value, config *Config) bool {
|
|
|
|
|
b := v.Block
|
|
|
|
|
_ = b
|
|
|
|
|
// match: (SliceCap (SliceMake _ _ cap))
|
|
|
|
|
// cond:
|
|
|
|
|
// result: cap
|
|
|
|
|
for {
|
2016-03-21 16:18:45 -07:00
|
|
|
v_0 := v.Args[0]
|
|
|
|
|
if v_0.Op != OpSliceMake {
|
2016-03-03 11:13:43 +01:00
|
|
|
break
|
|
|
|
|
}
|
2016-03-21 16:18:45 -07:00
|
|
|
cap := v_0.Args[2]
|
2016-03-03 11:13:43 +01:00
|
|
|
v.reset(OpCopy)
|
|
|
|
|
v.Type = cap.Type
|
|
|
|
|
v.AddArg(cap)
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
func rewriteValuedec_OpSliceLen(v *Value, config *Config) bool {
|
|
|
|
|
b := v.Block
|
|
|
|
|
_ = b
|
|
|
|
|
// match: (SliceLen (SliceMake _ len _))
|
|
|
|
|
// cond:
|
|
|
|
|
// result: len
|
|
|
|
|
for {
|
2016-03-21 16:18:45 -07:00
|
|
|
v_0 := v.Args[0]
|
|
|
|
|
if v_0.Op != OpSliceMake {
|
2016-03-03 11:13:43 +01:00
|
|
|
break
|
|
|
|
|
}
|
2016-03-21 16:18:45 -07:00
|
|
|
len := v_0.Args[1]
|
2016-03-03 11:13:43 +01:00
|
|
|
v.reset(OpCopy)
|
|
|
|
|
v.Type = len.Type
|
|
|
|
|
v.AddArg(len)
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
func rewriteValuedec_OpSlicePtr(v *Value, config *Config) bool {
|
|
|
|
|
b := v.Block
|
|
|
|
|
_ = b
|
|
|
|
|
// match: (SlicePtr (SliceMake ptr _ _ ))
|
|
|
|
|
// cond:
|
|
|
|
|
// result: ptr
|
|
|
|
|
for {
|
2016-03-21 16:18:45 -07:00
|
|
|
v_0 := v.Args[0]
|
|
|
|
|
if v_0.Op != OpSliceMake {
|
2016-03-03 11:13:43 +01:00
|
|
|
break
|
|
|
|
|
}
|
2016-03-21 16:18:45 -07:00
|
|
|
ptr := v_0.Args[0]
|
2016-03-03 11:13:43 +01:00
|
|
|
v.reset(OpCopy)
|
|
|
|
|
v.Type = ptr.Type
|
|
|
|
|
v.AddArg(ptr)
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
func rewriteValuedec_OpStringLen(v *Value, config *Config) bool {
|
|
|
|
|
b := v.Block
|
|
|
|
|
_ = b
|
|
|
|
|
// match: (StringLen (StringMake _ len))
|
|
|
|
|
// cond:
|
|
|
|
|
// result: len
|
|
|
|
|
for {
|
2016-03-21 16:18:45 -07:00
|
|
|
v_0 := v.Args[0]
|
|
|
|
|
if v_0.Op != OpStringMake {
|
2016-03-03 11:13:43 +01:00
|
|
|
break
|
|
|
|
|
}
|
2016-03-21 16:18:45 -07:00
|
|
|
len := v_0.Args[1]
|
2016-03-03 11:13:43 +01:00
|
|
|
v.reset(OpCopy)
|
|
|
|
|
v.Type = len.Type
|
|
|
|
|
v.AddArg(len)
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
func rewriteValuedec_OpStringPtr(v *Value, config *Config) bool {
|
|
|
|
|
b := v.Block
|
|
|
|
|
_ = b
|
|
|
|
|
// match: (StringPtr (StringMake ptr _))
|
|
|
|
|
// cond:
|
|
|
|
|
// result: ptr
|
|
|
|
|
for {
|
2016-03-21 16:18:45 -07:00
|
|
|
v_0 := v.Args[0]
|
|
|
|
|
if v_0.Op != OpStringMake {
|
2016-03-03 11:13:43 +01:00
|
|
|
break
|
|
|
|
|
}
|
2016-03-21 16:18:45 -07:00
|
|
|
ptr := v_0.Args[0]
|
2016-03-03 11:13:43 +01:00
|
|
|
v.reset(OpCopy)
|
|
|
|
|
v.Type = ptr.Type
|
|
|
|
|
v.AddArg(ptr)
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
func rewriteBlockdec(b *Block) bool {
|
|
|
|
|
switch b.Kind {
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|