diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 41ee1394edf301a1e62b62b6588890906b14df56..6dcc99edf2d3f4e9c747c7adf199784fc7cf9a98 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2003-07-26  J"orn Rennecke <joern.rennecke@superh.com>
+
+	* Makefile.in (ifcvt.o): Depend on target.h
+	* ifcvt.c (target.h): Include.
+	(if_convert): Don't call mark_loop_exit_edges if we can't
+	modify jumps.
+
 2003-07-26  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
 
 	* doc/install.texi (Testing): Adjust required versions of DejaGnu.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index e3e676cde45fc0fc37c4764159184424c544f9a9..545e5a45169de5759ecce3de5526c50d7aaaef60 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1791,7 +1791,7 @@ regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
    insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h $(RECOG_H) function.h \
    resource.h $(OBSTACK_H) flags.h $(TM_P_H)
 ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
-   $(REGS_H) toplev.h flags.h insn-config.h function.h $(RECOG_H) \
+   $(REGS_H) toplev.h flags.h insn-config.h function.h $(RECOG_H) target.h \
    $(BASIC_BLOCK_H) $(EXPR_H) output.h except.h $(TM_P_H) real.h $(OPTABS_H) \
    cfgloop.h
 params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(PARAMS_H) toplev.h
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index bb783fbf57f175eef00e8cb25fe432b18b8c99d5..eec1f369cd32dc9603a933f9b68ad10ec28f4542 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -39,6 +39,7 @@
 #include "toplev.h"
 #include "tm_p.h"
 #include "cfgloop.h"
+#include "target.h"
 
 
 #ifndef HAVE_conditional_execution
@@ -3112,7 +3113,8 @@ if_convert (int x_life_data_ok)
   num_removed_blocks = 0;
   life_data_ok = (x_life_data_ok != 0);
 
-  mark_loop_exit_edges ();
+  if (! (* targetm.cannot_modify_jumps_p) ())
+    mark_loop_exit_edges ();
 
   /* Free up basic_block_for_insn so that we don't have to keep it
      up to date, either here or in merge_blocks.  */