diff --git a/ivette/src/frama-c/plugins/eva/api/values/index.ts b/ivette/src/frama-c/plugins/eva/api/values/index.ts
index 4f550b91b0a00dd4cabbff1f89bf799c2741af30..c286426c70a761b23db0616b0870188f7456068e 100644
--- a/ivette/src/frama-c/plugins/eva/api/values/index.ts
+++ b/ivette/src/frama-c/plugins/eva/api/values/index.ts
@@ -121,7 +121,7 @@ export const getStmtInfo: Server.GetRequest<
 const getProbeInfo_internal: Server.GetRequest<
   marker,
   { condition: boolean, effects: boolean, rank: number,
-    stmt?: Json.key<'#stmt'>, code?: string }
+    stmt?: Json.key<'#stmt'>, code?: string, evaluable: boolean }
   > = {
   kind: Server.RqKind.GET,
   name:   'plugins.eva.values.getProbeInfo',
@@ -132,6 +132,7 @@ const getProbeInfo_internal: Server.GetRequest<
             rank: Json.jFail(Json.jNumber,'Number expected'),
             stmt: Json.jKey<'#stmt'>('#stmt'),
             code: Json.jString,
+            evaluable: Json.jFail(Json.jBoolean,'Boolean expected'),
           }),
   signals: [],
 };
@@ -139,7 +140,7 @@ const getProbeInfo_internal: Server.GetRequest<
 export const getProbeInfo: Server.GetRequest<
   marker,
   { condition: boolean, effects: boolean, rank: number,
-    stmt?: Json.key<'#stmt'>, code?: string }
+    stmt?: Json.key<'#stmt'>, code?: string, evaluable: boolean }
   >= getProbeInfo_internal;
 
 /** Evaluation of an expression or lvalue */
diff --git a/src/plugins/value/api/values_request.ml b/src/plugins/value/api/values_request.ml
index 05784f500b0a8bc88de10ea35f289bcaea465d1f..784b1a0fa9ad832637b2d1a9d7f761b8f95e8b2f 100644
--- a/src/plugins/value/api/values_request.ml
+++ b/src/plugins/value/api/values_request.ml
@@ -85,10 +85,10 @@ let () = Analysis.register_computation_hook ~on:Computed
 let next_steps s =
   match s.skind with
   | If (cond, _, _, _) -> [ `Then cond ; `Else cond ]
-  | Instr (Set _ | Call _ | Local_init _ | Asm _ | Code_annot _)
+  | Instr (Set _ | Call _ | Local_init _) -> [ `After ]
+  | Instr (Asm _ | Code_annot _)
   | Switch _ | Loop _ | Block _ | UnspecifiedSequence _
   | TryCatch _ | TryFinally _ | TryExcept _
-    -> [ `After ]
   | Instr (Skip _) | Return _ | Break _ | Continue _ | Goto _ | Throw _ -> []
 
 let probe_stmt s =
@@ -102,6 +102,7 @@ let probe_stmt s =
 let probe marker =
   let open Printer_tag in
   match marker with
+  | PLval (_, _, (Var vi, NoOffset)) when Cil.isFunctionType vi.vtype -> None
   | PLval(_,Kstmt s,l) -> Some (Plval (l,s))
   | PExp(_,Kstmt s,e) -> Some (Pexpr (e,s))
   | PStmt(_,s) | PStmtStart(_,s) -> probe_stmt s
@@ -530,7 +531,10 @@ let () =
 
 let () =
   let getProbeInfo = Request.signature ~input:(module Jmarker) () in
-  let set_code = Request.result_opt getProbeInfo
+  let set_evaluable = Request.result getProbeInfo
+      ~name:"evaluable" ~descr:(Md.plain "Can the probe be evaluated?")
+      (module Jbool)
+  and set_code = Request.result_opt getProbeInfo
       ~name:"code" ~descr:(Md.plain "Probe source code")
       (module Jstring)
   and set_stmt = Request.result_opt getProbeInfo
@@ -547,6 +551,9 @@ let () =
       ~default:false (module Jbool)
   in
   let set_probe rq pp p s =
+    let computed = Analysis.is_computed () in
+    let reachable = Results.is_reachable s in
+    set_evaluable rq (computed && reachable);
     set_code rq (Some (Pretty_utils.to_string pp p)) ;
     set_stmt rq (Some s) ;
     set_rank rq (Ranking.stmt s) ;
@@ -563,7 +570,7 @@ let () =
       match probe marker with
       | Some (Plval (l, s)) -> set_probe rq Printer.pp_lval l s
       | Some (Pexpr (e, s)) -> set_probe rq Printer.pp_exp  e s
-      | None -> ()
+      | None -> set_evaluable rq false
     end
 
 (* -------------------------------------------------------------------------- *)