Skip to content

Commit f97e009

Browse files
Merge pull request #1625 from CopperCableIsolator/master
Sparsification of Affine Equality Matrix
2 parents 0d03c9f + 0a5fe07 commit f97e009

24 files changed

+2181
-378
lines changed

dune-project

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(lang dune 3.7)
1+
(lang dune 3.13)
22
(using dune_site 0.1)
33
(cram enable)
44
(name goblint)

goblint.opam

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ homepage: "https://goblint.in.tum.de"
3535
doc: "https://goblint.readthedocs.io/en/latest/"
3636
bug-reports: "https://github.com/goblint/analyzer/issues"
3737
depends: [
38-
"dune" {>= "3.7"}
38+
"dune" {>= "3.13"}
3939
"ocaml" {>= "4.14"}
4040
"goblint-cil" {>= "2.0.5"}
4141
"batteries" {>= "3.5.1"}

src/analyses/apron/affineEqualityAnalysis.apron.ml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,30 @@
44

55
open Analyses
66

7+
open SparseVector
8+
open ListMatrix
9+
10+
open ArrayVector
11+
open ArrayMatrix
12+
713
include RelationAnalysis
814

15+
(* There are two versions of the affeq domain.
16+
1. Sparse without side effects
17+
2. Dense Array with side effects
18+
Default: sparse implementation
19+
The array implementation with side effects of the affeq domain is used when the --disable ana.affeq.sparse option is set *)
20+
let get_domain: (module RelationDomain.RD) Lazy.t =
21+
lazy (
22+
if GobConfig.get_bool "ana.affeq.sparse" then
23+
(module AffineEqualityDomain.D2 (SparseVector) (ListMatrix))
24+
else
25+
(module AffineEqualityDenseDomain.D2 (ArrayVector) (ArrayMatrix))
26+
)
27+
928
let spec_module: (module MCPSpec) Lazy.t =
1029
lazy (
11-
let module AD = AffineEqualityDomain.D2 (VectorMatrix.ArrayVector) (VectorMatrix.ArrayMatrix) in
30+
let module AD = (val Lazy.force get_domain) in
1231
let module Priv = (val RelationPriv.get_priv ()) in
1332
let module Spec =
1433
struct

0 commit comments

Comments
 (0)