let compute_defs kf stmt lval = 
  (* TODO : move this function somewhere else ? *)
  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 -> StmtSet.add s defs
    in
    (* select corresponding stmts *)
    let defs = List.fold_left add_node StmtSet.empty nodes in
      Some (defs, undef)
  with Db.Pdg.Bottom | Db.Pdg.Top | Db.Pdg.NotFound -> None