From ef482a861f1c3d4e1834e0d17d466955a022b52d Mon Sep 17 00:00:00 2001 From: Andreas Tobler Date: Wed, 14 Apr 2004 20:50:53 +0200 Subject: [PATCH] bb-reorder.c (fix_crossing_conditional_branches): Adjust the previous fix to check HAVE_return at runtime too. 2004-04-14 Andreas Tobler * bb-reorder.c (fix_crossing_conditional_branches): Adjust the previous fix to check HAVE_return at runtime too. From-SVN: r80685 --- gcc/ChangeLog | 5 +++++ gcc/bb-reorder.c | 15 ++++++++++++--- 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 + + * bb-reorder.c (fix_crossing_conditional_branches): Adjust the + previous fix to check HAVE_return at runtime too. + 2004-04-14 Nick Clifton * 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 (); -- 2.7.4