Versions in this module Expand all Collapse all v7 v7.5.0 Oct 22, 2026 v7.4.0 Oct 21, 2026 v7.3.0 Oct 20, 2026 v7.2.0 Oct 19, 2026 v7.1.1 Oct 18, 2026 v7.1.0 Oct 18, 2026 Changes in this version + const MaxSCEVDepth + func AnalyzeSCEV(info *LoopInfo) + func CountLoops(loops []*Loop) int + func FormatSCEV(s SCEV, r Renamer, label func(*SCEVAddRec) string) string + type IVType int + const IVTypeBasic + const IVTypeGeometric + 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 + IntType types.Type + 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 github.com/BlackVectorOps/semantic_firewall/v4 github.com/BlackVectorOps/semantic_firewall/v5 github.com/BlackVectorOps/semantic_firewall/v6