Domains.Transformations
Simple transformation functors
module Ternary : Sig.Simple_Transformation
Since Frama-c's parser already removes ternary expressions, this isn't used. Removes Ast.Expr.E_IfThenElse
constructs by making the control flow jumps explicit.
module DivGuard : Sig.Simple_Transformation
Add a guard divisor <> 0
before every division.
module ShiftGuard : Sig.Simple_Transformation
Add a guard shift_ammount >= 0
before every shift.
module Query : Sig.Simple_Transformation
Simplification via simple queries. This functor is often inlined for efficiency, as in Product.ClassicalQueryLeft
or Numeric.ClassicalQuery
.
Simple expression rewrites using queries (x + 0 -> x and others). This domain isn't complete: it will rewrite things like x = x -> 1 which can cause problems if x contains a division by 0.
SSA variant of SimplifyExpression
.
module SSA_Query : Sig.SSA_Transformation
Simplification via simple queries. This functor is often inlined for efficiency, as in Product.SSAQueryLeft
or Numeric.SSAQuery
.