From 687f1bf2a82e2e7080cf6528b05d06255a3c8ce4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Wed, 20 Feb 2019 17:07:53 +0100
Subject: [PATCH] [rte] move rte_annotations to generator

---
 src/plugins/rte/generator.ml  |  6 ++++++
 src/plugins/rte/generator.mli | 10 +++++++++-
 src/plugins/rte/register.ml   |  2 +-
 src/plugins/rte/visit.ml      |  6 ------
 src/plugins/rte/visit.mli     |  1 -
 5 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/plugins/rte/generator.ml b/src/plugins/rte/generator.ml
index e72328ab527..2a944b6c6cd 100644
--- a/src/plugins/rte/generator.ml
+++ b/src/plugins/rte/generator.ml
@@ -197,6 +197,12 @@ let emitter =
     ~correctness:[ Kernel.SafeArrays.parameter ]
     ~tuning:[]
 
+let get_registered_annotations stmt =
+  Annotations.fold_code_annot
+    (fun e a acc -> if Emitter.equal e emitter then a ::acc else acc)
+    stmt
+    []
+
 (*
   Local Variables:
   compile-command: "make -C ../../.."
diff --git a/src/plugins/rte/generator.mli b/src/plugins/rte/generator.mli
index 2ed6fe38a32..ae903fb0bc8 100644
--- a/src/plugins/rte/generator.mli
+++ b/src/plugins/rte/generator.mli
@@ -26,6 +26,8 @@ module type S = sig
   val accessor: Db.RteGen.status_accessor
 end
 
+(* No module for Trivial: dependency added for generators below *)
+
 module Initialized: S
 module Mem_access: S
 module Pointer_call: S
@@ -41,9 +43,15 @@ module Float_to_int: S
 module Finite_float: S
 module Bool_value: S
 
+val all_statuses: Db.RteGen.status_accessor list
+
+(** The Emitter for Annotations registered by RTE *)
 val emitter: Emitter.t
 
-val all_statuses: Db.RteGen.status_accessor list
+open Cil_types
+
+(** Returns all annotations actually {i registered} by RTE so far *)
+val get_registered_annotations: stmt -> code_annotation list
 
 (*
   Local Variables:
diff --git a/src/plugins/rte/register.ml b/src/plugins/rte/register.ml
index 8831d66b29b..e5b0281e856 100644
--- a/src/plugins/rte/register.ml
+++ b/src/plugins/rte/register.ml
@@ -83,7 +83,7 @@ let _ =
        Cil_datatype.Stmt.ty
        (let module L = Datatype.List(Cil_datatype.Code_annotation) in L.ty))
     ~journalize:true
-    Visit.rte_annotations
+    Generator.get_registered_annotations
 
 let _ =
   Dynamic.register
diff --git a/src/plugins/rte/visit.ml b/src/plugins/rte/visit.ml
index dea0d52eeee..a4746447501 100644
--- a/src/plugins/rte/visit.ml
+++ b/src/plugins/rte/visit.ml
@@ -457,12 +457,6 @@ class annot_visitor kf flags on_alarm = object (self)
 
 end
 
-let rte_annotations stmt =
-  Annotations.fold_code_annot
-    (fun e a acc -> if Emitter.equal e Generator.emitter then a ::acc else acc)
-    stmt
-    []
-
 (** {2 Iterate over Alarms on Cil elements} *)
 
 type on_alarm = kernel_function -> stmt -> invalid:bool -> Alarms.alarm -> unit
diff --git a/src/plugins/rte/visit.mli b/src/plugins/rte/visit.mli
index 1f75de9bd22..1127c3c52b9 100644
--- a/src/plugins/rte/visit.mli
+++ b/src/plugins/rte/visit.mli
@@ -40,7 +40,6 @@ val do_all_rte: kernel_function -> unit
 (** Generates all RTEs except preconditions for a given function. *)
 val do_rte: kernel_function -> unit
 
-val rte_annotations: stmt -> code_annotation list
 val do_stmt_annotations: kernel_function -> stmt -> code_annotation list
 val do_exp_annotations: kernel_function -> stmt -> exp -> code_annotation list
 
-- 
GitLab