diff options
Diffstat (limited to 'patches/gcc/4.4.0/300-pr40105.patch')
-rw-r--r-- | patches/gcc/4.4.0/300-pr40105.patch | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/patches/gcc/4.4.0/300-pr40105.patch b/patches/gcc/4.4.0/300-pr40105.patch deleted file mode 100644 index 1acbad6..0000000 --- a/patches/gcc/4.4.0/300-pr40105.patch +++ /dev/null @@ -1,180 +0,0 @@ -diff -durN gcc-4.4.0.orig/gcc/Makefile.in gcc-4.4.0/gcc/Makefile.in ---- gcc-4.4.0.orig/gcc/Makefile.in 2009-03-25 13:00:32.000000000 +0100 -+++ gcc-4.4.0/gcc/Makefile.in 2009-05-27 21:38:50.000000000 +0200 -@@ -2785,7 +2785,8 @@ - value-prof.h $(TREE_INLINE_H) $(TARGET_H) - cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \ -- output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(TM_P_H) insn-config.h $(EXPR_H) \ -+ output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(TM_P_H) $(INSN_ATTR_H) \ -+ insn-config.h $(EXPR_H) \ - $(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \ - tree-pass.h $(DF_H) $(GGC_H) - cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ -diff -durN gcc-4.4.0.orig/gcc/cfgrtl.c gcc-4.4.0/gcc/cfgrtl.c ---- gcc-4.4.0.orig/gcc/cfgrtl.c 2008-12-12 22:16:09.000000000 +0100 -+++ gcc-4.4.0/gcc/cfgrtl.c 2009-05-27 21:38:50.000000000 +0200 -@@ -53,6 +53,7 @@ - #include "toplev.h" - #include "tm_p.h" - #include "obstack.h" -+#include "insn-attr.h" - #include "insn-config.h" - #include "cfglayout.h" - #include "expr.h" -@@ -427,13 +428,27 @@ - return 0; - } - -+static unsigned int -+rest_of_pass_free_cfg (void) -+{ -+#ifdef DELAY_SLOTS -+ /* The resource.c machinery uses DF but the CFG isn't guaranteed to be -+ valid at that point so it would be too late to call df_analyze. */ -+ if (optimize > 0 && flag_delayed_branch) -+ df_analyze (); -+#endif -+ -+ free_bb_for_insn (); -+ return 0; -+} -+ - struct rtl_opt_pass pass_free_cfg = - { - { - RTL_PASS, - NULL, /* name */ - NULL, /* gate */ -- free_bb_for_insn, /* execute */ -+ rest_of_pass_free_cfg, /* execute */ - NULL, /* sub */ - NULL, /* next */ - 0, /* static_pass_number */ -diff -durN gcc-4.4.0.orig/gcc/resource.c gcc-4.4.0/gcc/resource.c ---- gcc-4.4.0.orig/gcc/resource.c 2009-02-20 16:20:38.000000000 +0100 -+++ gcc-4.4.0/gcc/resource.c 2009-05-27 21:38:50.000000000 +0200 -@@ -135,8 +135,6 @@ - static int - find_basic_block (rtx insn, int search_limit) - { -- basic_block bb; -- - /* Scan backwards to the previous BARRIER. Then see if we can find a - label that starts a basic block. Return the basic block number. */ - for (insn = prev_nonnote_insn (insn); -@@ -157,11 +155,8 @@ - for (insn = next_nonnote_insn (insn); - insn && LABEL_P (insn); - insn = next_nonnote_insn (insn)) -- { -- FOR_EACH_BB (bb) -- if (insn == BB_HEAD (bb)) -- return bb->index; -- } -+ if (BLOCK_FOR_INSN (insn)) -+ return BLOCK_FOR_INSN (insn)->index; - - return -1; - } -@@ -848,13 +843,12 @@ - (with no intervening active insns) to see if any of them start a basic - block. If we hit the start of the function first, we use block 0. - -- Once we have found a basic block and a corresponding first insns, we can -- accurately compute the live status from basic_block_live_regs and -- reg_renumber. (By starting at a label following a BARRIER, we are immune -- to actions taken by reload and jump.) Then we scan all insns between -- that point and our target. For each CLOBBER (or for call-clobbered regs -- when we pass a CALL_INSN), mark the appropriate registers are dead. For -- a SET, mark them as live. -+ Once we have found a basic block and a corresponding first insn, we can -+ accurately compute the live status (by starting at a label following a -+ BARRIER, we are immune to actions taken by reload and jump.) Then we -+ scan all insns between that point and our target. For each CLOBBER (or -+ for call-clobbered regs when we pass a CALL_INSN), mark the appropriate -+ registers are dead. For a SET, mark them as live. - - We have to be careful when using REG_DEAD notes because they are not - updated by such things as find_equiv_reg. So keep track of registers -@@ -954,13 +948,10 @@ - TARGET. Otherwise, we must assume everything is live. */ - if (b != -1) - { -- regset regs_live = DF_LR_IN (BASIC_BLOCK (b)); -+ regset regs_live = df_get_live_in (BASIC_BLOCK (b)); - rtx start_insn, stop_insn; - -- /* Compute hard regs live at start of block -- this is the real hard regs -- marked live, plus live pseudo regs that have been renumbered to -- hard regs. */ -- -+ /* Compute hard regs live at start of block. */ - REG_SET_TO_HARD_REG_SET (current_live_regs, regs_live); - - /* Get starting and ending insn, handling the case where each might -@@ -1046,10 +1037,24 @@ - - else if (LABEL_P (real_insn)) - { -+ basic_block bb; -+ - /* A label clobbers the pending dead registers since neither - reload nor jump will propagate a value across a label. */ - AND_COMPL_HARD_REG_SET (current_live_regs, pending_dead_regs); - CLEAR_HARD_REG_SET (pending_dead_regs); -+ -+ /* We must conservatively assume that all registers that used -+ to be live here still are. The fallthrough edge may have -+ left a live register uninitialized. */ -+ bb = BLOCK_FOR_INSN (real_insn); -+ if (bb) -+ { -+ HARD_REG_SET extra_live; -+ -+ REG_SET_TO_HARD_REG_SET (extra_live, df_get_live_in (bb)); -+ IOR_HARD_REG_SET (current_live_regs, extra_live); -+ } - } - - /* The beginning of the epilogue corresponds to the end of the -@@ -1121,6 +1126,7 @@ - init_resource_info (rtx epilogue_insn) - { - int i; -+ basic_block bb; - - /* Indicate what resources are required to be valid at the end of the current - function. The condition code never is and memory always is. If the -@@ -1189,6 +1195,11 @@ - /* Allocate and initialize the tables used by mark_target_live_regs. */ - target_hash_table = XCNEWVEC (struct target_info *, TARGET_HASH_PRIME); - bb_ticks = XCNEWVEC (int, last_basic_block); -+ -+ /* Set the BLOCK_FOR_INSN of each label that starts a basic block. */ -+ FOR_EACH_BB (bb) -+ if (LABEL_P (BB_HEAD (bb))) -+ BLOCK_FOR_INSN (BB_HEAD (bb)) = bb; - } - - /* Free up the resources allocated to mark_target_live_regs (). This -@@ -1197,6 +1208,8 @@ - void - free_resource_info (void) - { -+ basic_block bb; -+ - if (target_hash_table != NULL) - { - int i; -@@ -1222,6 +1235,10 @@ - free (bb_ticks); - bb_ticks = NULL; - } -+ -+ FOR_EACH_BB (bb) -+ if (LABEL_P (BB_HEAD (bb))) -+ BLOCK_FOR_INSN (BB_HEAD (bb)) = NULL; - } - - /* Clear any hashed information that we have stored for INSN. */ |