From d91eb3c809f1bc22731b05fcefa1418469e69826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Wed, 13 Oct 2021 09:15:24 +0200 Subject: [PATCH] [Eva] Minor simplification to catch exceptions when reading loop unroll limits. --- .../partitioning/partitioning_parameters.ml | 23 ++++++------------- .../oracle/very_large_integers.11.res.oracle | 2 +- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/plugins/value/partitioning/partitioning_parameters.ml b/src/plugins/value/partitioning/partitioning_parameters.ml index 83bd2e974ce..4ddcf183521 100644 --- a/src/plugins/value/partitioning/partitioning_parameters.ml +++ b/src/plugins/value/partitioning/partitioning_parameters.ml @@ -93,22 +93,13 @@ struct let t = Cil.visitCilTerm (new Logic_utils.simplify_const_lval global_init) t in - match Logic_utils.constFoldTermToInt t with - | Some n -> - begin - match Integer.to_int_opt n with - | Some n' -> Partition.IntLimit n' - | None -> - warn "invalid loop unrolling parameter (%a); ignoring" - (Integer.pretty ~hexa:false) n; - default - end - | None -> - try Partition.ExpLimit (term_to_exp t) - with Db.Properties.Interp.No_conversion -> - warn "loop unrolling parameters must be valid expressions; \ - ignoring"; - default + try + match Logic_utils.constFoldTermToInt t with + | Some n -> Partition.IntLimit (Integer.to_int_exn n) + | None -> Partition.ExpLimit (term_to_exp t) + with Z.Overflow | Db.Properties.Interp.No_conversion -> + warn "invalid loop unrolling parameter; ignoring"; + default end | _ -> warn "invalid unroll annotation; ignoring"; diff --git a/tests/syntax/oracle/very_large_integers.11.res.oracle b/tests/syntax/oracle/very_large_integers.11.res.oracle index f34db553ef8..fca174f9e70 100644 --- a/tests/syntax/oracle/very_large_integers.11.res.oracle +++ b/tests/syntax/oracle/very_large_integers.11.res.oracle @@ -10,6 +10,6 @@ [eva:initial-state] Values of globals at initialization nondet ∈ [--..--] [kernel:annot-error] tests/syntax/very_large_integers.c:92: Warning: - invalid loop unrolling parameter (-9999999999999999999); ignoring + invalid loop unrolling parameter; ignoring [kernel] User Error: warning annot-error treated as fatal error. [kernel] Frama-C aborted: invalid user input. -- GitLab