From 6a59a791dfd9702214d8db8a91ac6499ea2b3158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Thu, 20 Jan 2022 17:49:14 +0100 Subject: [PATCH] [kernel] Optimizes the [contract_special_float] code transformation. Only processes function specifications. Does not use a visitor anymore. --- .../ast_transformations/contract_special_float.ml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/kernel_services/ast_transformations/contract_special_float.ml b/src/kernel_services/ast_transformations/contract_special_float.ml index fa2996946b0..763b1fd5b49 100644 --- a/src/kernel_services/ast_transformations/contract_special_float.ml +++ b/src/kernel_services/ast_transformations/contract_special_float.ml @@ -121,14 +121,14 @@ let update_spec spec = spec.spec_complete_behaviors <- map_filter spec.spec_complete_behaviors; spec.spec_disjoint_behaviors <- map_filter spec.spec_disjoint_behaviors -let visitor = object - inherit Cil.nopCilVisitor - method! vspec spec = update_spec spec; Cil.SkipChildren -end +let visit_global = function + | GFun (fundec, _) -> update_spec fundec.sspec + | GFunDecl (spec, _, _) -> update_spec spec + | _ -> () let run ast = if Kernel.SpecialFloat.get () <> "none" then - Cil.visitCilFileSameGlobals visitor ast + Cil.iterGlobals ast visit_global let transform = File.register_code_transformation_category "contract_special_float" -- GitLab