let computeUseDefStmtKind ?(acc_used=VS.empty)
?(acc_defs=VS.empty)
(sk: stmtkind) : VS.t * VS.t =
varUsed := acc_used;
varDefs := acc_defs;
let ve e = ignore (visitCilExpr useDefVisitor e) in
let _ =
match sk with
Return (None, _) -> ()
| Return (Some e, _) -> ve e
| If (e, _, _, _) -> ve e
| Break _ | Goto _ | Continue _ -> ()
| Loop (_,_, _, _, _) -> ()
| Switch (e, _, _, _) -> ve e
| Instr il ->
ignore (visitCilInstr useDefVisitor il)
| TryExcept _ | TryFinally _ -> ()
| Block _ | UnspecifiedSequence _ -> ()
in
!varUsed, !varDefs