From ad9c6eccf67748ae4e371de6310d94b059abaff9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 18 Apr 2023 13:23:04 +0200
Subject: [PATCH] [Eva] Fixes interpretation of successive split annotations.

A skip statement is created on each split annotation: do not ration
states on them to avoid meddling in successive split directives.
---
 src/plugins/eva/engine/iterator.ml                 | 2 +-
 src/plugins/eva/partitioning/trace_partitioning.ml | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/plugins/eva/engine/iterator.ml b/src/plugins/eva/engine/iterator.ml
index 2ccf27969ed..2a0c7af021a 100644
--- a/src/plugins/eva/engine/iterator.ml
+++ b/src/plugins/eva/engine/iterator.ml
@@ -464,7 +464,7 @@ module Make_Dataflow
     end;
     (* Get vertex store *)
     let store = get_vertex_store v in
-    (* Join incoming s tates *)
+    (* Join incoming states *)
     let flow = Partitioning.join sources store in
     let flow =
       match v.vertex_start_of with
diff --git a/src/plugins/eva/partitioning/trace_partitioning.ml b/src/plugins/eva/partitioning/trace_partitioning.ml
index 6e0868ccf24..31742605441 100644
--- a/src/plugins/eva/partitioning/trace_partitioning.ml
+++ b/src/plugins/eva/partitioning/trace_partitioning.ml
@@ -74,7 +74,11 @@ struct
   let empty_store ~(stmt : stmt option) : store =
     let limit, merge, flow_actions = match stmt with
       | None -> max_int, false, []
-      | Some stmt -> slevel stmt, merge stmt, flow_actions stmt
+      | Some stmt ->
+        let actions = flow_actions stmt in
+        if Cil.is_skip stmt.skind && actions <> []
+        then max_int, false, actions
+        else slevel stmt, merge stmt, actions
     in
     let rationing = Partition.new_rationing ~limit ~merge in
     {
-- 
GitLab