From b424702b45e62bc37f39f236e984c300070b2433 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 2 Apr 2019 16:04:30 +0200
Subject: [PATCH] [Eva] -eva-precision -1 resets analysis parameters to their
 default values.

---
 src/plugins/value/value_parameters.ml | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/plugins/value/value_parameters.ml b/src/plugins/value/value_parameters.ml
index 82314cb1807..7bd16282089 100644
--- a/src/plugins/value/value_parameters.ml
+++ b/src/plugins/value/value_parameters.ml
@@ -1340,9 +1340,12 @@ let () = add_precision_dep Precision.parameter
    means. *)
 let set (type t) (module P: Parameter_sig.S with type t = t) =
   let previous = ref (P.get ()) in
-  fun t ->
+  fun ~default t ->
     let already_set = P.is_set () && not (P.equal !previous (P.get ())) in
-    if not already_set then begin P.set t; previous := t end;
+    if not already_set then begin
+      if default then P.clear () else P.set t;
+      previous := P.get ();
+    end;
     let str = Typed_parameter.get_value P.parameter in
     let str = match P.parameter.Typed_parameter.accessor with
       | Typed_parameter.String _ -> "\'" ^ str ^ "\'"
@@ -1360,7 +1363,7 @@ let configures = ref []
    for a precision n. *)
 let bind (type t) (module P: Parameter_sig.S with type t = t) f =
   let set = set (module P) in
-  configures := (fun n -> set (f n)) :: !configures
+  configures := (fun n -> set ~default:(n < 0) (f n)) :: !configures
 
 (*  power             0   1   2   3   4    5    6    7     8     9     10     11 *)
 let slevel_power = [| 0;  10; 20; 50;  75; 100; 200; 500; 1000; 2000; 5000; 10000 |]
@@ -1390,8 +1393,7 @@ let set_analysis n =
   List.iter ((|>) n) (List.rev !configures)
 
 let configure_precision () =
-  let n = Precision.get () in
-  if n >= 0 then set_analysis n
+  if Precision.is_set () then set_analysis (Precision.get ())
 
 (* -------------------------------------------------------------------------- *)
 (* --- Freeze parameters. MUST GO LAST                                    --- *)
-- 
GitLab