Commit 4ca19309 by Teresa Johnson Committed by Teresa Johnson

This patch fixes an lto profiledbootstrap failure with -freorder-blocks-and-partition enabled.

This patch fixes an lto profiledbootstrap failure with
-freorder-blocks-and-partition enabled. Currently compgotos
is the only pass that goes into cfglayout mode after bb reordering,
which is undesireable (and in the case of -freorder-blocks-and-partition
can cause illegal partitioning) because of the optimizations performed
on the cfg when going into cfglayout mode. Moved compgoto before
bb reordering to avoid these problems.

2013-11-18  Teresa Johnson  <tejohnson@google.com>

	* gcc/cfgrtl.c (cfg_layout_initialize): Assert if we
	try to go into cfglayout after bb reordering.
	* gcc/passes.def: Move compgotos before bb reordering
	since it goes into cfglayout.

From-SVN: r204985
parent 38f4f02f
2013-11-18 Teresa Johnson <tejohnson@google.com>
* gcc/cfgrtl.c (cfg_layout_initialize): Assert if we
try to go into cfglayout after bb reordering.
* gcc/passes.def: Move compgotos before bb reordering
since it goes into cfglayout.
2013-11-18 Bernd Schmidt <bernds@codesourcery.com> 2013-11-18 Bernd Schmidt <bernds@codesourcery.com>
* cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes. * cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes.
...@@ -4204,6 +4204,15 @@ cfg_layout_initialize (unsigned int flags) ...@@ -4204,6 +4204,15 @@ cfg_layout_initialize (unsigned int flags)
rtx x; rtx x;
basic_block bb; basic_block bb;
/* Once bb reordering is complete, cfg layout mode should not be re-entered.
Entering cfg layout mode will perform optimizations on the cfg that
could affect the bb layout negatively or even require fixups. An
example of the latter is if edge forwarding performed when optimizing
the cfg layout required moving a block from the hot to the cold section
under -freorder-blocks-and-partition. This would create an illegal
partitioning unless some manual fixup was performed. */
gcc_assert (!crtl->bb_reorder_complete);
initialize_original_copy_tables (); initialize_original_copy_tables ();
cfg_layout_rtl_register_cfg_hooks (); cfg_layout_rtl_register_cfg_hooks ();
......
...@@ -382,6 +382,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -382,6 +382,7 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_regrename); NEXT_PASS (pass_regrename);
NEXT_PASS (pass_cprop_hardreg); NEXT_PASS (pass_cprop_hardreg);
NEXT_PASS (pass_fast_rtl_dce); NEXT_PASS (pass_fast_rtl_dce);
NEXT_PASS (pass_duplicate_computed_gotos);
NEXT_PASS (pass_reorder_blocks); NEXT_PASS (pass_reorder_blocks);
NEXT_PASS (pass_branch_target_load_optimize2); NEXT_PASS (pass_branch_target_load_optimize2);
NEXT_PASS (pass_leaf_regs); NEXT_PASS (pass_leaf_regs);
...@@ -393,7 +394,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -393,7 +394,6 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_stack_regs_run); NEXT_PASS (pass_stack_regs_run);
POP_INSERT_PASSES () POP_INSERT_PASSES ()
NEXT_PASS (pass_compute_alignments); NEXT_PASS (pass_compute_alignments);
NEXT_PASS (pass_duplicate_computed_gotos);
NEXT_PASS (pass_variable_tracking); NEXT_PASS (pass_variable_tracking);
NEXT_PASS (pass_free_cfg); NEXT_PASS (pass_free_cfg);
NEXT_PASS (pass_machine_reorg); NEXT_PASS (pass_machine_reorg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment