diff --git a/src/plugins/value/Eva.mli b/src/plugins/value/Eva.mli
index f44c2e4c112623521a6b4404f2c007e29b3e91b0..6887ef6e6a0500b39638f69285f49edb9f49ce47 100644
--- a/src/plugins/value/Eva.mli
+++ b/src/plugins/value/Eva.mli
@@ -99,13 +99,18 @@ module Eva_annotations: sig
     | FlowMerge of split_term
     (** Merge states separated by a previous split. *)
 
-  val add_slevel_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+  val get_slevel_annot : Cil_types.stmt -> slevel_annotation option
+  val get_unroll_annot : Cil_types.stmt -> unroll_annotation list
+  val get_flow_annot : Cil_types.stmt -> flow_annotation list
+  val get_subdivision_annot : Cil_types.stmt -> int list
+
+  val add_slevel_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
     Cil_types.stmt -> slevel_annotation -> unit
-  val add_unroll_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+  val add_unroll_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
     Cil_types.stmt -> unroll_annotation -> unit
-  val add_flow_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+  val add_flow_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
     Cil_types.stmt -> flow_annotation -> unit
-  val add_subdivision_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+  val add_subdivision_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
     Cil_types.stmt -> int -> unit
 end
 
diff --git a/src/plugins/value/utils/eva_annotations.ml b/src/plugins/value/utils/eva_annotations.ml
index d954d3e4a060f50a9dee1b810a404ca471021a5d..1a6ea6ddc0ba2a4a66e3c3f065eb15c2f1a83cec 100644
--- a/src/plugins/value/utils/eva_annotations.ml
+++ b/src/plugins/value/utils/eva_annotations.ml
@@ -102,7 +102,8 @@ struct
     in
     List.rev (Annotations.fold_code_annot filter_add stmt [])
 
-  let add ~emitter ~loc stmt annot =
+  let add ~emitter ?loc stmt annot =
+    let loc = Option.value ~default:(Cil_datatype.Stmt.loc stmt) loc in
     let param = M.export annot in
     let extension = Logic_const.new_acsl_extension name loc false param in
     let annot_node = Cil_types.AExtended ([], is_loop_annot, extension) in
@@ -261,14 +262,14 @@ let add_slevel_annot = Slevel.add
 
 let add_unroll_annot = Unroll.add
 
-let add_flow_annot ~emitter ~loc stmt flow_annotation =
+let add_flow_annot ~emitter ?loc stmt flow_annotation =
   let f, annot =
     match flow_annotation with
     | FlowSplit (annot, Static) -> Split.add, annot
     | FlowSplit (annot, Dynamic) -> DynamicSplit.add, annot
     | FlowMerge annot -> Merge.add, annot
   in
-  f ~emitter ~loc stmt (annot, None)
+  f ~emitter ?loc stmt (annot, None)
 
 
 module Subdivision = Register (struct
diff --git a/src/plugins/value/utils/eva_annotations.mli b/src/plugins/value/utils/eva_annotations.mli
index 1bae12631f98321b1abd69b9f5d81767edc8c732..77ddc30b1bc958707aec1750d8b63604c839ebf1 100644
--- a/src/plugins/value/utils/eva_annotations.mli
+++ b/src/plugins/value/utils/eva_annotations.mli
@@ -56,11 +56,11 @@ val get_flow_annot : Cil_types.stmt -> flow_annotation list
 val get_subdivision_annot : Cil_types.stmt -> int list
 val get_allocation: Cil_types.stmt -> allocation_kind
 
-val add_slevel_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+val add_slevel_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
   Cil_types.stmt -> slevel_annotation -> unit
-val add_unroll_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+val add_unroll_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
   Cil_types.stmt -> unroll_annotation -> unit
-val add_flow_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+val add_flow_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
   Cil_types.stmt -> flow_annotation -> unit
-val add_subdivision_annot : emitter:Emitter.t -> loc:Cil_types.location ->
+val add_subdivision_annot : emitter:Emitter.t -> ?loc:Cil_types.location ->
   Cil_types.stmt -> int -> unit