diff options
author | Son Ho | 2022-06-30 06:46:52 +0200 |
---|---|---|
committer | Son Ho | 2022-06-30 06:46:52 +0200 |
commit | 4f33892c81cdaf6aefaad9b7cef1456dcfead67c (patch) | |
tree | 5cfe38e3cea5518179f3655d22171620287817aa /src/FunsAnalysis.ml | |
parent | 775b2473976075aa6458a51682f3beeee75dc17a (diff) |
Take failing rvalues into account in FunsAnalysis.analyze_fun_decls
Diffstat (limited to '')
-rw-r--r-- | src/FunsAnalysis.ml | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/FunsAnalysis.ml b/src/FunsAnalysis.ml index dc205eb9..b8dd17d8 100644 --- a/src/FunsAnalysis.ml +++ b/src/FunsAnalysis.ml @@ -9,6 +9,7 @@ open LlbcAst open Modules +module EU = ExpressionsUtils type fun_info = { can_fail : bool; @@ -57,6 +58,13 @@ let analyze_module (m : llbc_module) (funs_map : fun_decl FunDeclId.Map.t) can_fail := true; super#visit_Assert env a + method! visit_rvalue _env rv = + match rv with + | Use _ | Ref _ | Discriminant _ | Aggregate _ -> () + | UnaryOp (uop, _) -> can_fail := EU.unop_can_fail uop || !can_fail + | BinaryOp (bop, _, _) -> + can_fail := EU.binop_can_fail bop || !can_fail + method! visit_Call env call = (match call.func with | Regular id -> |