Versions in this module Expand all Collapse all v4 v4.2.0 May 24, 2026 v4.1.0 May 24, 2026 v4.0.0 May 22, 2026 Changes in this version + const MaxSCEVDepth + func AnalyzeSCEV(info *LoopInfo) + func CountLoops(loops []*Loop) int + type IVType int + const IVTypeBasic + const IVTypeDerived + const IVTypeGeometric + const IVTypePolynomial + const IVTypeUnknown + type InductionVariable struct + Phi *ssa.Phi + Start SCEV + Step SCEV + Type IVType + type Loop struct + Blocks map[*ssa.BasicBlock]bool + Children []*Loop + Exits []*ssa.BasicBlock + Header *ssa.BasicBlock + Inductions map[*ssa.Phi]*InductionVariable + Latch *ssa.BasicBlock + Parent *Loop + SCEVCache map[ssa.Value]SCEV + TripCount SCEV + func (l *Loop) String() string + type LoopInfo struct + Function *ssa.Function + LoopMap map[*ssa.BasicBlock]*Loop + Loops []*Loop + func DetectLoops(fn *ssa.Function) *LoopInfo + type Renamer func(ssa.Value) string + type SCEV interface + EvaluateAt func(k *big.Int, cache map[SCEV]*big.Int) *big.Int + IsLoopInvariant func(loop *Loop) bool + String func() string + StringWithRenamer func(r Renamer) string + func SCEVFromConst(c *ssa.Const) SCEV + func ToSCEV(v ssa.Value, loop *Loop) SCEV + type SCEVAddRec struct + Loop *Loop + Start SCEV + Step SCEV + func (s *SCEVAddRec) EvaluateAt(k *big.Int, cache map[SCEV]*big.Int) *big.Int + func (s *SCEVAddRec) IsLoopInvariant(loop *Loop) bool + func (s *SCEVAddRec) Name() string + func (s *SCEVAddRec) Parent() *ssa.Function + func (s *SCEVAddRec) Pos() token.Pos + func (s *SCEVAddRec) Referrers() *[]ssa.Instruction + func (s *SCEVAddRec) String() string + func (s *SCEVAddRec) StringWithRenamer(r Renamer) string + func (s *SCEVAddRec) Type() types.Type + type SCEVConstant struct + Value *big.Int + func (s *SCEVConstant) EvaluateAt(k *big.Int, cache map[SCEV]*big.Int) *big.Int + func (s *SCEVConstant) IsLoopInvariant(loop *Loop) bool + func (s *SCEVConstant) Name() string + func (s *SCEVConstant) Parent() *ssa.Function + func (s *SCEVConstant) Pos() token.Pos + func (s *SCEVConstant) Referrers() *[]ssa.Instruction + func (s *SCEVConstant) String() string + func (s *SCEVConstant) StringWithRenamer(r Renamer) string + func (s *SCEVConstant) Type() types.Type + type SCEVGenericExpr struct + Op token.Token + X SCEV + Y SCEV + func (s *SCEVGenericExpr) EvaluateAt(k *big.Int, cache map[SCEV]*big.Int) *big.Int + func (s *SCEVGenericExpr) IsLoopInvariant(loop *Loop) bool + func (s *SCEVGenericExpr) Name() string + func (s *SCEVGenericExpr) Parent() *ssa.Function + func (s *SCEVGenericExpr) Pos() token.Pos + func (s *SCEVGenericExpr) Referrers() *[]ssa.Instruction + func (s *SCEVGenericExpr) String() string + func (s *SCEVGenericExpr) StringWithRenamer(r Renamer) string + func (s *SCEVGenericExpr) Type() types.Type + type SCEVMax struct + X SCEV + Y SCEV + func (s *SCEVMax) EvaluateAt(k *big.Int, cache map[SCEV]*big.Int) *big.Int + func (s *SCEVMax) IsLoopInvariant(loop *Loop) bool + func (s *SCEVMax) Name() string + func (s *SCEVMax) Parent() *ssa.Function + func (s *SCEVMax) Pos() token.Pos + func (s *SCEVMax) Referrers() *[]ssa.Instruction + func (s *SCEVMax) String() string + func (s *SCEVMax) StringWithRenamer(r Renamer) string + func (s *SCEVMax) Type() types.Type + type SCEVUnknown struct + IsInvariant bool + Value ssa.Value + func (s *SCEVUnknown) EvaluateAt(k *big.Int, cache map[SCEV]*big.Int) *big.Int + func (s *SCEVUnknown) IsLoopInvariant(loop *Loop) bool + func (s *SCEVUnknown) Name() string + func (s *SCEVUnknown) Parent() *ssa.Function + func (s *SCEVUnknown) Pos() token.Pos + func (s *SCEVUnknown) Referrers() *[]ssa.Instruction + func (s *SCEVUnknown) String() string + func (s *SCEVUnknown) StringWithRenamer(r Renamer) string + func (s *SCEVUnknown) Type() types.Type Other modules containing this package github.com/BlackVectorOps/semantic_firewall/v3