From b841e3db71595283d23c54548fc682ee49d0b125 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 23 Apr 2024 21:06:23 +0200
Subject: [PATCH] [Eva] Reports red statuses in post_analysis, and not in the
 main function.

Thus, red statuses are only reported at the end of an analysis.
---
 src/plugins/eva/engine/analysis.ml          | 6 +-----
 src/plugins/eva/engine/compute_functions.ml | 3 ++-
 tests/value/oracle/red_alarms.res.oracle    | 2 +-
 3 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/plugins/eva/engine/analysis.ml b/src/plugins/eva/engine/analysis.ml
index f63494c9e5b..1fcd2719a6d 100644
--- a/src/plugins/eva/engine/analysis.ml
+++ b/src/plugins/eva/engine/analysis.ml
@@ -231,9 +231,5 @@ let compute =
 
 let () = Parameters.ForceValues.set_output_dependencies [Self.state]
 
-let main () =
-  (* Value computations *)
-  if Parameters.ForceValues.get () then compute ();
-  if is_computed () then Red_statuses.report ()
-
+let main () = if Parameters.ForceValues.get () then compute ()
 let () = Boot.Main.extend main
diff --git a/src/plugins/eva/engine/compute_functions.ml b/src/plugins/eva/engine/compute_functions.ml
index fedba296edd..80b2ad866a9 100644
--- a/src/plugins/eva/engine/compute_functions.ml
+++ b/src/plugins/eva/engine/compute_functions.ml
@@ -127,7 +127,8 @@ let post_analysis () =
   Eva_dynamic.RteGen.mark_generated_rte ();
   post_analysis_cleanup ~aborted:false;
   (* Remove redundant alarms *)
-  if Parameters.RmAssert.get () then Eva_dynamic.Scope.rm_asserts ()
+  if Parameters.RmAssert.get () then Eva_dynamic.Scope.rm_asserts ();
+  Red_statuses.report ()
 
 (* Registers signal handlers for SIGUSR1 and SIGINT to cleanly abort the Eva
    analysis. Returns a function that restores previous signal behaviors after
diff --git a/tests/value/oracle/red_alarms.res.oracle b/tests/value/oracle/red_alarms.res.oracle
index bdad22b9a66..01af779f31d 100644
--- a/tests/value/oracle/red_alarms.res.oracle
+++ b/tests/value/oracle/red_alarms.res.oracle
@@ -112,6 +112,7 @@
 [eva] Recording results for main
 [eva] Done for function main
 [eva] red_alarms.i:45: assertion 'Eva,index_bound' got final status invalid.
+[eva] Listing red statuses in file red_alarms.csv
 [eva] ====== VALUES COMPUTED ======
 [eva:final-states] Values at end of function in_bound:
   y ∈ [0..99]
@@ -136,7 +137,6 @@
   x ∈ [--..--]
 [eva:final-states] Values at end of function main:
   
-[eva] Listing red statuses in file red_alarms.csv
 [from] Computing for function in_bound
 [from] Done for function in_bound
 [from] Computing for function maybe_swap
-- 
GitLab