let compute_defs kf stmt lval =
try
let pdg = !Db.Pdg.get kf in
let zone = !Db.Value.lval_to_zone (Kstmt stmt)
~with_alarms:CilE.warn_none_mode lval
in
let nodes, undef =
!Db.Pdg.find_location_nodes_at_stmt pdg stmt ~before:true zone
in
let add_node defs (node,_z) =
match PdgIndex.Key.stmt (!Db.Pdg.node_key node) with
| None -> defs
| Some s -> Stmt.Set.add s defs
in
let defs = List.fold_left add_node Stmt.Set.empty nodes in
Some (defs, undef)
with Db.Pdg.Bottom | Db.Pdg.Top | Db.Pdg.NotFound ->
None