On Tue, Oct 30, 2012 at 10:28 PM, Steven Bosscher wrote: > Hello Teresa, > > Could you try this patch for me also? It moves bbpart outside the part > of the passes pipeline that works in cfglayout mode.
where's the "unsend" button if you need it... So, to complete the mail... Could you try this patch for me also? It moves bbpart outside the part of the passes pipeline that works in cfglayout mode. It looks like when someone (/me looks the other way) changed the compiler to work like that, he/she forgot about updating this pass... Instead, the pass should run just before register allocation, as late as possible so that any funny CFG modifications have taken place. A possible down-side is that profile info may have degenerated a bit further, but I don't think that's a serious concern because the partitioning is actually quite stupid: Just stuff all blocks with count==0 into the cold section. Updating 0-counts is easy enough that I think GCC should get that right everywhere. It'd be nice to figure out if there are less stupid^Wsimplistic heuristics to decide what should go into the cold partition, for GCC 4.9... Ciao! Steven * passes.c (init_optimization_passes): Move pass_partition_blocks just before RA. Index: passes.c =================================================================== --- passes.c (revision 192995) +++ passes.c (working copy) @@ -1595,7 +1595,6 @@ init_optimization_passes (void) NEXT_PASS (pass_ud_rtl_dce); NEXT_PASS (pass_combine); NEXT_PASS (pass_if_after_combine); - NEXT_PASS (pass_partition_blocks); NEXT_PASS (pass_regmove); NEXT_PASS (pass_outof_cfg_layout_mode); NEXT_PASS (pass_split_all_insns); @@ -1606,6 +1605,7 @@ init_optimization_passes (void) NEXT_PASS (pass_match_asm_constraints); NEXT_PASS (pass_sms); NEXT_PASS (pass_sched); + NEXT_PASS (pass_partition_blocks); NEXT_PASS (pass_ira); NEXT_PASS (pass_reload); NEXT_PASS (pass_postreload);