From 54ca5b81d5dd6907f3a3254f6cf2753b2bdf7918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Fri, 26 Jul 2019 11:40:59 +0200 Subject: [PATCH] [Inout] Fixes the location computed for \exit_status in assigns clauses. Handles \exit_status exactly as \result. --- src/plugins/inout/operational_inputs.ml | 7 ++++--- tests/spec/oracle/assigns_result.res.oracle | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/plugins/inout/operational_inputs.ml b/src/plugins/inout/operational_inputs.ml index 3df4c008632..ea48d5ad04b 100644 --- a/src/plugins/inout/operational_inputs.ml +++ b/src/plugins/inout/operational_inputs.ml @@ -115,20 +115,21 @@ let eval_assigns kf state assigns = not (Kernel_function.is_formal v kf) | Base.CLogic_Var _ | Base.Null | Base.String _ -> true) in + let out_term = out.it_content in let outputs_under, outputs_over, deps = try - if Logic_utils.is_result out.it_content + if Logic_const.(is_result out_term || is_exit_status out_term) then (Zone.bottom, Zone.bottom, Zone.bottom) else let loc_out_under, loc_out_over, deps = - !Db.Properties.Interp.loc_to_loc_under_over ~result:None state out.it_content + !Db.Properties.Interp.loc_to_loc_under_over ~result:None state out_term in (enumerate_valid_bits_under Write loc_out_under, enumerate_valid_bits Write loc_out_over, clean_deps deps) with Db.Properties.Interp.No_conversion -> Inout_parameters.warning ~current:true ~once:true - "failed to interpret assigns clause '%a'" Printer.pp_term out.it_content; + "failed to interpret assigns clause '%a'" Printer.pp_term out_term; (Zone.bottom, Zone.top, Zone.top) in (* Compute all inputs as a zone *) diff --git a/tests/spec/oracle/assigns_result.res.oracle b/tests/spec/oracle/assigns_result.res.oracle index be625108d0c..f492644ff77 100644 --- a/tests/spec/oracle/assigns_result.res.oracle +++ b/tests/spec/oracle/assigns_result.res.oracle @@ -11,8 +11,6 @@ [eva] Done for function f [eva] computing for function g <- main. Called from tests/spec/assigns_result.i:16. -[inout] tests/spec/assigns_result.i:16: Warning: - failed to interpret assigns clause '\exit_status' [eva] using specification for function g [eva] tests/spec/assigns_result.i:16: Warning: cannot interpret assigns clause \exit_status -- GitLab