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);

Reply via email to