let change_mode_if_needed res =
      if LabObligs.is_empty res.memo then ()
      else
          begin
            debug "change to Pass2 (clear wp table)@.";
            begin try
              let e_start = Cil2cfg.start_edge res.cfg in
              let start_goal = find res e_start in
                add_memo res e_start start_goal
            with Not_found -> ()
            end;
            HE.clear res.tbl;
            (* move memo obligs of Pass1 to obligs for Pass2 *)
            res.obligs <- res.memo;
            res.memo <- LabObligs.empty;
            res.mode <- Pass2
          end