Skip to content

Commit 8efcd09

Browse files
committed
Use var_eq unknown invalidate fix from #618
1 parent cc1d9cf commit 8efcd09

File tree

2 files changed

+3
-10
lines changed

2 files changed

+3
-10
lines changed

src/analyses/varEq.ml

+2-9
Original file line numberDiff line numberDiff line change
@@ -491,15 +491,8 @@ struct
491491
match reachables (Analyses.ask_of_ctx ctx) es with
492492
| None -> D.top ()
493493
| Some rs ->
494-
let remove_reachable1 es st =
495-
let remove_reachable2 e st =
496-
if reachable_from rs e && not (isConstant e) then remove_exp (Analyses.ask_of_ctx ctx) e st else st
497-
in
498-
D.B.fold remove_reachable2 es st
499-
in
500-
(* TODO: do something like this instead to be sound? *)
501-
(* List.fold_left (fun st e -> remove_exp (Analyses.ask_of_ctx ctx) e st) ctx.local (Queries.LS.fold (fun lval acc -> mkAddrOf (Lval.CilLval.to_lval lval) :: acc) rs []) *)
502-
D.fold remove_reachable1 ctx.local ctx.local
494+
(* TODO: avoid intermediate list *)
495+
List.fold_left (fun st e -> remove_exp (Analyses.ask_of_ctx ctx) e st) ctx.local (Queries.LS.fold (fun lval acc -> mkAddrOf (Lval.CilLval.to_lval lval) :: acc) rs [])
503496

504497
let unknown_fn ctx lval f args =
505498
let args =

tests/regression/06-symbeq/32-var_eq-unknown-invalidate.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ int main() {
1919
if (res == (struct resource *)0)
2020
assert(1); // reachable
2121
else
22-
assert(1); // TODO reachable
22+
assert(1); // reachable
2323

2424
return 0;
2525
}

0 commit comments

Comments
 (0)