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
This commit is contained in:
parent
38f4f02fd6
commit
4ca1930986
3 changed files with 17 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
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>
|
||||
|
||||
* cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes.
|
||||
|
|
|
@ -4204,6 +4204,15 @@ cfg_layout_initialize (unsigned int flags)
|
|||
rtx x;
|
||||
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 ();
|
||||
|
||||
cfg_layout_rtl_register_cfg_hooks ();
|
||||
|
|
|
@ -382,6 +382,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
NEXT_PASS (pass_regrename);
|
||||
NEXT_PASS (pass_cprop_hardreg);
|
||||
NEXT_PASS (pass_fast_rtl_dce);
|
||||
NEXT_PASS (pass_duplicate_computed_gotos);
|
||||
NEXT_PASS (pass_reorder_blocks);
|
||||
NEXT_PASS (pass_branch_target_load_optimize2);
|
||||
NEXT_PASS (pass_leaf_regs);
|
||||
|
@ -393,7 +394,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
NEXT_PASS (pass_stack_regs_run);
|
||||
POP_INSERT_PASSES ()
|
||||
NEXT_PASS (pass_compute_alignments);
|
||||
NEXT_PASS (pass_duplicate_computed_gotos);
|
||||
NEXT_PASS (pass_variable_tracking);
|
||||
NEXT_PASS (pass_free_cfg);
|
||||
NEXT_PASS (pass_machine_reorg);
|
||||
|
|
Loading…
Add table
Reference in a new issue