let call_exit_only caller_env stmt kf args ~pre ~pexit ~assigns ~p_exit =
    on_context caller_env "call_normal" p_exit Keep_opened Keep_assigns
      (fun env assigns_method p_exit ->
         add_dependencies (WpAnnot.get_called_assigns kf) ;
         add_dependencies (WpAnnot.get_called_exit_conditions kf) ;
         add_dependencies (WpAnnot.get_called_preconditions_at kf stmt) ;
         let call = callenv env stmt args in
         let x_status = L.exit_status env in
         let env_pre = L.call_pre env kf call.v_args call.m_pre in
         let env_exit = L.call_exit env kf call.v_args call.m_pre call.m_post x_status in
         let p_called = do_hypothesis env_exit "exit-condition" pexit p_exit in
         let p_called = D.forall [x_status] p_called in
         let asgnd = assigned_of_assigns env_pre assigns in
         let p_havoc = havoc_region WpPropId.StmtAssigns call.m_post asgnd p_called in
         let p_before = do_hypothesis env_pre "pre-condition" pre p_havoc in
         check_assigns call.m_pre assigns_method asgnd p_before)