From: ebotcazou Date: Wed, 29 Apr 2009 21:44:26 +0000 (+0000) Subject: PR rtl-optimization/39938 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=225e5f6f49d9d76603062b097ed377c5f6f97533;p=thirdparty%2Fgcc.git PR rtl-optimization/39938 * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H). * cfgrtl.c: Include insn-attr.h. (rest_of_pass_free_cfg): New function. (pass_free_cfg): Use rest_of_pass_free_cfg as execute function. * resource.c (init_resource_info): Remove call to df_analyze. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146988 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7a97ddde62e..888a769eb6d9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2009-04-29 Eric Botcazou + Steven Bosscher + + PR rtl-optimization/39938 + * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H). + * cfgrtl.c: Include insn-attr.h. + (rest_of_pass_free_cfg): New function. + (pass_free_cfg): Use rest_of_pass_free_cfg as execute function. + * resource.c (init_resource_info): Remove call to df_analyze. + 2009-04-29 Richard Guenther PR target/39943 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 2283138956e0..1a253489f81c 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2802,7 +2802,8 @@ cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ value-prof.h $(TREE_INLINE_H) $(TARGET_H) $(SSAEXPAND_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 --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 36bc865916be..a2c0e0f20268 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -53,6 +53,7 @@ along with GCC; see the file COPYING3. If not see #include "toplev.h" #include "tm_p.h" #include "obstack.h" +#include "insn-attr.h" #include "insn-config.h" #include "cfglayout.h" #include "expr.h" @@ -408,13 +409,27 @@ free_bb_for_insn (void) 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 --git a/gcc/resource.c b/gcc/resource.c index be76f688410a..91b86c9573be 100644 --- a/gcc/resource.c +++ b/gcc/resource.c @@ -1200,8 +1200,6 @@ init_resource_info (rtx epilogue_insn) FOR_EACH_BB (bb) if (LABEL_P (BB_HEAD (bb))) BLOCK_FOR_INSN (BB_HEAD (bb)) = bb; - - df_analyze (); } /* Free up the resources allocated to mark_target_live_regs (). This