let reduce kf graph s =
  let remove p s_postdom =
    if StmtSet.mem p s_postdom 
    then 
      try
        let p_postdom = get_postdom kf graph p in
        let s_postdom = StmtSet.diff s_postdom p_postdom
        in s_postdom
      with Db.Postdominators.Top -> assert false 
                                   (* p postdom s -> cannot be top *)
    else s_postdom (* p has already been removed from s_postdom *)
  in 
  try
    let postdom = get_postdom kf graph s in
    let postdom = StmtSet.fold remove postdom postdom in
      if debug then 
        Cil.log "new postdom for %d:%a = %a\n" 
          s.sid pretty_stmt s StmtSet.pretty postdom;
    InstrHashtbl.replace graph (Kstmt s) (Some postdom)
  with Db.Postdominators.Top -> 
    ()