On 12/07/2017 09:53 AM, Tom de Vries wrote:
Hi,

I'm currently debugging a problem in lra, and got a bit lost in the 20k+ lines dump file.

I observed that:
- the lra dump file is one of the biggest ones
- lra itself consists of a looping of sub-passes.

So, I've:
- written a dump infrastructure addition that can be used within a pass
  to mark the end of the current (sub)dump file and start a next
  subdump file.
- used that infrastructure to instrument lra to dump info from
  different subpasses into separate files.

Using this patch I managed to split the reload dump file into smaller bits:
...
$ wc -l *.reload.*
       3 no-scevccp-outer-10.c.276r.reload
       0 no-scevccp-outer-10.c.276r.reload.001.lra_start
       3 no-scevccp-outer-10.c.276r.reload.002.remove_scratches
    2335 no-scevccp-outer-10.c.276r.reload.003.lra_constraints
    1781 no-scevccp-outer-10.c.276r.reload.004.lra_create_live_ranges
     460 no-scevccp-outer-10.c.276r.reload.005.lra_inheritance
     920 no-scevccp-outer-10.c.276r.reload.006.lra_create_live_ranges
     563 no-scevccp-outer-10.c.276r.reload.007.lra_assign
     184 no-scevccp-outer-10.c.276r.reload.008.lra_undo_inheritance
     830 no-scevccp-outer-10.c.276r.reload.009.lra_create_live_ranges
       3 no-scevccp-outer-10.c.276r.reload.010.lra_coalesce
     165 no-scevccp-outer-10.c.276r.reload.011.lra_constraints
     844 no-scevccp-outer-10.c.276r.reload.012.lra_create_live_ranges
     110 no-scevccp-outer-10.c.276r.reload.013.lra_inheritance
     879 no-scevccp-outer-10.c.276r.reload.014.lra_create_live_ranges
      22 no-scevccp-outer-10.c.276r.reload.015.lra_assign
      74 no-scevccp-outer-10.c.276r.reload.016.lra_undo_inheritance
      19 no-scevccp-outer-10.c.276r.reload.017.lra_constraints
     845 no-scevccp-outer-10.c.276r.reload.018.lra_create_live_ranges
      80 no-scevccp-outer-10.c.276r.reload.019.lra_remat
      27 no-scevccp-outer-10.c.276r.reload.020.lra_spill
     866 no-scevccp-outer-10.c.276r.reload.021.lra_constraints
     830 no-scevccp-outer-10.c.276r.reload.022.lra_create_live_ranges
       0 no-scevccp-outer-10.c.276r.reload.023.lra_inheritance
     830 no-scevccp-outer-10.c.276r.reload.024.lra_create_live_ranges
      53 no-scevccp-outer-10.c.276r.reload.025.lra_assign
       5 no-scevccp-outer-10.c.276r.reload.026.lra_constraints
     370 no-scevccp-outer-10.c.276r.reload.027.lra_finishing
    4137 no-scevccp-outer-10.c.276r.reload.028.lra_end
       0 no-scevccp-outer-10.c.276r.reload.029.lra_start
      27 no-scevccp-outer-10.c.276r.reload.030.remove_scratches
     553 no-scevccp-outer-10.c.276r.reload.031.lra_constraints
     188 no-scevccp-outer-10.c.276r.reload.032.lra_create_live_ranges
       8 no-scevccp-outer-10.c.276r.reload.033.lra_inheritance
     188 no-scevccp-outer-10.c.276r.reload.034.lra_create_live_ranges
      21 no-scevccp-outer-10.c.276r.reload.035.lra_assign
       3 no-scevccp-outer-10.c.276r.reload.036.lra_undo_inheritance
       5 no-scevccp-outer-10.c.276r.reload.037.lra_constraints
      99 no-scevccp-outer-10.c.276r.reload.038.lra_finishing
     515 no-scevccp-outer-10.c.276r.reload.039.lra_end
...

Notes:
- dump info from different functions is not put together
- this is on by default atm. We probably want to enable this only
  using a switch fsplit-dump or some such.
- the lra_end dump files ends with ";; Function ...", which should be in
  the next lra_start dump file. Once we enable this using a switch we
  can probably do better.

Any comments?

Personally for me the size of LRA dump file is not a problem.  What is inconvenient is that sometimes I need to see RTL after each subpass.  Currently I do it by calling debug_rtx_range in gdb after the subpass in question.

 So this approach would be useful at least for me in some cases. But I think it should be not a default approach because in many other cases the current LRA dump file is enough.  Moreover I even prefer to have one file for IRA and LRA and frequently use -fira-verbose=1<a digit> which output both IRA and LRA dumps into stderr.

Reply via email to