From 9ede6b657d3c4bca4853d1de54e5b3f8d811b9c9 Mon Sep 17 00:00:00 2001 From: Simmo Saan Date: Tue, 27 Feb 2024 15:32:35 +0200 Subject: [PATCH] Avoid two uses of RD.vars Avoids creation of intermediate lists --- src/analyses/apron/relationPriv.apron.ml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/analyses/apron/relationPriv.apron.ml b/src/analyses/apron/relationPriv.apron.ml index 40f3e57065..11c8b54498 100644 --- a/src/analyses/apron/relationPriv.apron.ml +++ b/src/analyses/apron/relationPriv.apron.ml @@ -86,13 +86,13 @@ struct let escape node ask getg sideg (st:relation_components_t) escaped:relation_components_t = let rel = st.rel in - let esc_vars = List.filter (fun var -> match AV.find_metadata var with + let rel_local = RD.remove_filter rel (fun var -> + match AV.find_metadata var with | Some (Global _) -> false | Some (Local r) -> EscapeDomain.EscapedVars.mem r escaped | _ -> false - ) (RD.vars rel) + ) in - let rel_local = RD.remove_vars rel esc_vars in { st with rel = rel_local } let sync (ask: Q.ask) getg sideg (st: relation_components_t) reason = @@ -626,13 +626,12 @@ struct st else let rel = st.rel in - let g_vars = List.filter (fun var -> + let rel_side = RD.keep_filter rel (fun var -> match AV.find_metadata var with | Some (Global _) -> true | _ -> false - ) (RD.vars rel) + ) in - let rel_side = RD.keep_vars rel g_vars in sideg V.mutex_inits rel_side; let rel_local = RD.remove_filter rel (fun var -> match AV.find_metadata var with