Versions in this module Expand all Collapse all v4 v4.4.0 Jun 11, 2026 v4.3.0 Jun 10, 2026 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