From 86c3adfb8d24d6d5148a595f85c256fb2b95ea78 Mon Sep 17 00:00:00 2001 From: Andre Maroneze <andre.maroneze@cea.fr> Date: Mon, 29 Jan 2024 19:07:29 +0100 Subject: [PATCH] [Kernel] remove unsafe Kinstr.loc --- src/kernel_services/ast_data/alarms.ml | 7 ++++++- src/kernel_services/ast_queries/cil_datatype.ml | 4 ---- src/kernel_services/ast_queries/cil_datatype.mli | 1 - src/plugins/aorai/aorai_dataflow.ml | 2 +- src/plugins/eva/engine/compute_functions.ml | 14 +++++++++----- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/kernel_services/ast_data/alarms.ml b/src/kernel_services/ast_data/alarms.ml index 99658f1077b..16ab1a0a5cb 100644 --- a/src/kernel_services/ast_data/alarms.ml +++ b/src/kernel_services/ast_data/alarms.ml @@ -664,8 +664,13 @@ let find_alarm_in_emitters tbl alarm = (** Converts an alarm to a code annotation. Returns the code annotation, whether said code annotation is new, and the table in which the code annot is/should be inserted. *) -let to_annot_aux kinstr ?(loc=Kinstr.loc kinstr) alarm = +let to_annot_aux kinstr ?loc alarm = (* Kernel.debug "registering alarm %a" D.pretty alarm;*) + let loc = match loc, kinstr with + | Some l, _ -> l + | None, Kstmt stmt -> Stmt.loc stmt + | None, Kglobal -> Location.unknown + in let add alarm = let pred = create_predicate ~loc alarm in let pred = Logic_const.toplevel_predicate pred in diff --git a/src/kernel_services/ast_queries/cil_datatype.ml b/src/kernel_services/ast_queries/cil_datatype.ml index e1dd788e464..0e02f014f61 100644 --- a/src/kernel_services/ast_queries/cil_datatype.ml +++ b/src/kernel_services/ast_queries/cil_datatype.ml @@ -363,10 +363,6 @@ module Kinstr = struct | Kstmt s -> Stmt.pretty fmt s end) - let loc = function - | Kstmt st -> Stmt.loc st - | Kglobal -> assert false - let kinstr_of_opt_stmt = function | None -> Kglobal | Some s -> Kstmt s diff --git a/src/kernel_services/ast_queries/cil_datatype.mli b/src/kernel_services/ast_queries/cil_datatype.mli index e0d2eb8b9b9..e0ec1076378 100644 --- a/src/kernel_services/ast_queries/cil_datatype.mli +++ b/src/kernel_services/ast_queries/cil_datatype.mli @@ -200,7 +200,6 @@ module Kinstr: sig val kinstr_of_opt_stmt: stmt option -> kinstr (** @since Nitrogen-20111001. *) - val loc: t -> location end module Label: S_with_collections_pretty with type t = label diff --git a/src/plugins/aorai/aorai_dataflow.ml b/src/plugins/aorai/aorai_dataflow.ml index 202e2e46c03..b44b715ecd4 100644 --- a/src/plugins/aorai/aorai_dataflow.ml +++ b/src/plugins/aorai/aorai_dataflow.ml @@ -621,7 +621,7 @@ let compute_func_aux stack call_site kf init_state = let source = match call_site with | Kglobal -> None - | Kstmt _ -> Some (fst (Cil_datatype.Kinstr.loc call_site)) + | Kstmt stmt -> Some (fst (Cil_datatype.Stmt.loc stmt)) in Aorai_option.warning ?source "Call to %a does not follow automaton's specification. \ diff --git a/src/plugins/eva/engine/compute_functions.ml b/src/plugins/eva/engine/compute_functions.ml index b90145463ac..09a3b4d353b 100644 --- a/src/plugins/eva/engine/compute_functions.ml +++ b/src/plugins/eva/engine/compute_functions.ml @@ -252,11 +252,15 @@ module Make (Abstract: Abstractions.S_with_evaluation) = struct specification or body according to [target]. If [-eva-show-progress] is true, the callstack and additional information are printed. *) let compute_using_spec_or_body target kinstr call state = - if kinstr <> Kglobal && Parameters.ValShowProgress.get () then - Self.feedback - "@[computing for function %a.@\nCalled from %a.@]" - Callstack.pretty_short call.callstack - Cil_datatype.Location.pretty (Cil_datatype.Kinstr.loc kinstr); + begin + match kinstr with + | Kstmt stmt when Parameters.ValShowProgress.get () -> + Self.feedback + "@[computing for function %a.@\nCalled from %a.@]" + Callstack.pretty_short call.callstack + Cil_datatype.Location.pretty (Cil_datatype.Stmt.loc stmt) + | _ -> () + end; let compute, kind = match target with | `Body (fundec, save_results) -> -- GitLab