From 81108f21367b40f50e3c9054657cd4e7b644eab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Fri, 28 Apr 2023 11:22:03 +0200 Subject: [PATCH] [Eva] Octagons: optimizes function [filter]. --- src/plugins/eva/domains/octagons.ml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/plugins/eva/domains/octagons.ml b/src/plugins/eva/domains/octagons.ml index 978434c0097..bd50d179591 100644 --- a/src/plugins/eva/domains/octagons.ml +++ b/src/plugins/eva/domains/octagons.ml @@ -1065,8 +1065,13 @@ module Deps = struct let filter (bases: Base.Hptset.t) (m, i : t): VSet.t * t = let i_inter, i_diff = BaseToVariables.partition_with_shape bases i in - let vars = BaseToVariables.all_variables i_diff in - vars, VSet.fold remove vars (m, i_inter) + let removed_vars = BaseToVariables.all_variables i_diff in + let m = VariableToDeps.diff_with_shape removed_vars m in + let filter (s1, s2) = + VSet.diff s1 removed_vars, VSet.diff s2 removed_vars + in + let i = BaseToVariables.map filter i_inter in + removed_vars, (m, i) let get_var_bases (m, _: t) (var: Variable.t) = try @@ -1870,8 +1875,8 @@ module Domain = struct mem_var x && mem_var y in let octagons = Octagons.filter mem_pair state.octagons in - let intervals = Intervals.filter mem_var state.intervals in - let relations = Relations.filter mem_var state.relations in + let intervals = Intervals.diff_with_shape removed_vars state.intervals in + let relations = Relations.diff_with_shape removed_vars state.relations in { state with octagons; intervals; relations; deps } let interprocedural_reuse = -- GitLab