re PR bootstrap/52808 (LTO bootstrap failed with bootstrap-profiled)

2012-04-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/52808
	* tracer.c (tail_duplicate): Do not tail-duplicate loop header
	blocks.
	* Makefile.in (tracer.o): Depend on $(CFGLOOP_H).

From-SVN: r186135
This commit is contained in:
Richard Guenther 2012-04-04 12:12:00 +00:00 committed by Richard Biener
parent c1a969777f
commit 0b9066cf56
3 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2012-04-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/52808
* tracer.c (tail_duplicate): Do not tail-duplicate loop header
blocks.
* Makefile.in (tracer.o): Depend on $(CFGLOOP_H).
2012-04-04 Tristan Gingold <gingold@adacore.com>
* expr.c (expand_expr_real_2): Handle larger sizetype in

View File

@ -3391,7 +3391,7 @@ bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h output.h $(CFGLAYOUT_H) \
$(FLAGS_H) $(TIMEVAR_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \
$(TREE_PASS_H) $(TREE_FLOW_H) $(TREE_INLINE_H)
$(TREE_PASS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) $(CFGLOOP_H)
cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h \
$(FUNCTION_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \

View File

@ -52,6 +52,7 @@
#include "tree-pass.h"
#include "tree-flow.h"
#include "tree-inline.h"
#include "cfgloop.h"
static int count_insns (basic_block);
static bool ignore_bb_p (const_basic_block);
@ -307,7 +308,13 @@ tail_duplicate (void)
}
traced_insns += bb2->frequency * counts [bb2->index];
if (EDGE_COUNT (bb2->preds) > 1
&& can_duplicate_block_p (bb2))
&& can_duplicate_block_p (bb2)
/* We have the tendency to duplicate the loop header
of all do { } while loops. Do not do that - it is
not profitable and it might create a loop with multiple
entries or at least rotate the loop. */
&& (!current_loops
|| bb2->loop_father->header != bb2))
{
edge e;
basic_block copy;