aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Tobler <a.tobler@schweiz.ch>2004-04-14 20:50:53 +0200
committerAndreas Tobler <andreast@gcc.gnu.org>2004-04-14 20:50:53 +0200
commitef482a861f1c3d4e1834e0d17d466955a022b52d (patch)
treea9922d959dedca3a25fee194af629c1ebfb331be
parentd7afe286b32d866128d542bd8a733c4f21bd2206 (diff)
downloadgcc-ef482a861f1c3d4e1834e0d17d466955a022b52d.zip
gcc-ef482a861f1c3d4e1834e0d17d466955a022b52d.tar.gz
gcc-ef482a861f1c3d4e1834e0d17d466955a022b52d.tar.bz2
bb-reorder.c (fix_crossing_conditional_branches): Adjust the previous fix to check HAVE_return at runtime too.
2004-04-14 Andreas Tobler <a.tobler@schweiz.ch> * bb-reorder.c (fix_crossing_conditional_branches): Adjust the previous fix to check HAVE_return at runtime too. From-SVN: r80685
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/bb-reorder.c15
2 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 63351f1..644f2a3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-04-14 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * bb-reorder.c (fix_crossing_conditional_branches): Adjust the
+ previous fix to check HAVE_return at runtime too.
+
2004-04-14 Nick Clifton <nickc@redhat.com>
* config/arm/arm.c (arm_override_options): If the user has not
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index 283dc39..2d72807 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -78,6 +78,7 @@
#include "fibheap.h"
#include "target.h"
#include "function.h"
+#include "tm_p.h"
#include "obstack.h"
#include "expr.h"
#include "regs.h"
@@ -87,6 +88,15 @@
the .o file there will be an extra round.*/
#define N_ROUNDS 5
+/* Stubs in case we don't have a return insn.
+ We have to check at runtime too, not only compiletime. */
+
+#ifndef HAVE_return
+#define HAVE_return 0
+#define gen_return() NULL_RTX
+#endif
+
+
/* Branch thresholds in thousandths (per mille) of the REG_BR_PROB_BASE. */
static int branch_threshold[N_ROUNDS] = {400, 200, 100, 0, 0};
@@ -1684,11 +1694,10 @@ fix_crossing_conditional_branches (void)
(old_label),
BB_END (new_bb));
}
-#ifdef HAVE_return
- else if (GET_CODE (old_label) == RETURN)
+ else if (HAVE_return
+ && GET_CODE (old_label) == RETURN)
new_jump = emit_jump_insn_after (gen_return (),
BB_END (new_bb));
-#endif
else
abort ();