From 8be82aee33776f37c4c6c7655fd623e65af6f270 Mon Sep 17 00:00:00 2001
From: Allan Blanchard <allan.blanchard@cea.fr>
Date: Mon, 8 Feb 2021 16:22:41 +0100
Subject: [PATCH] [wp] Clear CFG tables after WP

---
 src/plugins/wp/cfgAnnot.ml     | 9 +++++++++
 src/plugins/wp/cfgAnnot.mli    | 6 ++++++
 src/plugins/wp/cfgGenerator.ml | 2 ++
 src/plugins/wp/cfgInfos.ml     | 1 +
 src/plugins/wp/cfgInfos.mli    | 2 ++
 5 files changed, 20 insertions(+)

diff --git a/src/plugins/wp/cfgAnnot.ml b/src/plugins/wp/cfgAnnot.ml
index 5944017b75c..235d65c7ff4 100644
--- a/src/plugins/wp/cfgAnnot.ml
+++ b/src/plugins/wp/cfgAnnot.ml
@@ -374,3 +374,12 @@ module LoopContract = WpContext.StaticGenerator(CodeKey)
 let get_loop_contract kf stmt = LoopContract.get (kf,stmt)
 
 (* -------------------------------------------------------------------------- *)
+(* --- Clear Tablesnts                                                    --- *)
+(* -------------------------------------------------------------------------- *)
+
+let clear () =
+  CallContract.clear () ;
+  LoopContract.clear () ;
+  CodeAssertions.clear ()
+
+(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/cfgAnnot.mli b/src/plugins/wp/cfgAnnot.mli
index 302d1b08ba7..5fe25bdd108 100644
--- a/src/plugins/wp/cfgAnnot.mli
+++ b/src/plugins/wp/cfgAnnot.mli
@@ -93,3 +93,9 @@ val get_precond_at : kernel_function -> stmt -> pred_info -> pred_info
 val get_call_contract : kernel_function -> call_contract
 
 (* -------------------------------------------------------------------------- *)
+(* --- Clear Tablesnts                                                    --- *)
+(* -------------------------------------------------------------------------- *)
+
+val clear : unit -> unit
+
+(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/cfgGenerator.ml b/src/plugins/wp/cfgGenerator.ml
index d781ebb00f4..c6872377e71 100644
--- a/src/plugins/wp/cfgGenerator.ml
+++ b/src/plugins/wp/cfgGenerator.ml
@@ -213,6 +213,8 @@ struct
              end
              (List.rev modes)
         ) task.modes ;
+      CfgAnnot.clear () ;
+      CfgInfos.clear () ;
       !collection
     end
 
diff --git a/src/plugins/wp/cfgInfos.ml b/src/plugins/wp/cfgInfos.ml
index 852fe68b4e3..013e77df4fc 100644
--- a/src/plugins/wp/cfgInfos.ml
+++ b/src/plugins/wp/cfgInfos.ml
@@ -252,5 +252,6 @@ module Generator = WpContext.StaticGenerator(Key)
     end)
 
 let get kf ?(bhv=[]) ?(prop=[]) () = Generator.get { kf ; bhv ; prop }
+let clear () = Generator.clear ()
 
 (* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/cfgInfos.mli b/src/plugins/wp/cfgInfos.mli
index b94ab3471ef..b5420e9ffe8 100644
--- a/src/plugins/wp/cfgInfos.mli
+++ b/src/plugins/wp/cfgInfos.mli
@@ -30,6 +30,8 @@ module Cfg = Interpreted_automata
 val get : Kernel_function.t -> ?bhv:string list -> ?prop:string list ->
   unit -> t
 
+val clear : unit -> unit
+
 val cfg : t -> Cfg.automaton option
 val annots : t -> bool
 val doomed : t -> WpPropId.prop_id Bag.t
-- 
GitLab