let computeFirstPredecessor (s: stmt) data =
    let new_additional_deps, new_additional_deps_table, _ =
      eliminate_additional data.additional_deps_table s
    in
    let data =
      {data with
         additional_deps = new_additional_deps;
         additional_deps_table = new_additional_deps_table}
    in
    match s.skind with
      | Switch (exp,_,_,_)
      | If (exp,_,_,_) ->
          let additional_vars = find_deps s data.deps_table exp in
          {data with
             additional_deps_table =
              Stmt.Map.add
                s
                additional_vars
                data.additional_deps_table;
             additional_deps =
              Zone.join
                additional_vars
                data.additional_deps }
      | _ -> data